View Single Post
Posts: 1,269 | Thanked: 3,961 times | Joined on May 2011 @ Brazil
#16
Benchmark of Python & NumPy on some mobile devices :
- XPS15 : Dell XPS 15 L502X, Core i7 2670QM 4 cores @ 2.2-3.1 GHz, 1+6 MB cache L2/L3, 8GB RAM DDR3 1,333 MHz, 1TB 5,400 RPM SATA hard drive. Ubuntu 12.04 64 bits, Python 2.7.3, NumPy 1.6.1;
- A1215B : Asus 1215B, AMD C-50 2 cores @ 1.0GHz, 1 MB cache L2, 2GB RAM DDR3 1,066 MHz, 320 GB 5,400 RPM SATA hard drive. Ubuntu 14.04 64 bits, Python 2.7.6, NumPy 1.8.2;
- A1005HA : Asus 1005HA, Atom N270 @ 1.6 GHz, 512 KB cache L2, 2GB RAM DDR2 667 MHz, 250 GB 5,400 RPM SATA hard drive. XUbuntu 14.04 32 bits, Python 2.7.6, NumPy 1.8.2;
- TF101 : Asus Transformer TF101, Tegra 2, 2 cores Cortex A9 @ 1.0 GHz, 1 GB RAM LPDDR2 600 MHz, 1MB cache L2, Android 4.0.3. Python 2.7.2, NumPy 1.3.0 from QPython;
- Nexus4 : LG Nexus 4, Qualcomm APQ8064 Snapdragon 4 cores Krait @ 1.5 GHz, 2GB RAM. Sailfish 1.0.8.19, Python 2.7.5, NumPy 1.9.0;
- Jolla : Jolla smartphone, Qualcomm Snapdragon S4 Plus MSM8930 2 cores Krait @ 1.5 GHz, 1GB RAM. Sailfish 1.0.8.19, Python 2.7.5, NumPy 1.9.0;
- N9 : Nokia N9, TI OMAP 3630 ARM Cortex A8 @ 1.0 GHz, 1GB RAM. MeeGo Harmattan, Python 2.6.6, Numpy 1.9.0;
- N900 : Nokia N900, TI OMAP 3430 ARM Cortex A8 @ 600 MHz, 256 MB RAM. Maemo 5, Python 2.5.4, NumPy 1.4.0;
- N810 : Nokia N810, TI OMAP 2420 ARM11 @ 400 MHz, 128 MB RAM. Maemo 4, Python 2.5.2. Easy Debian with Python 2.6.6, NumPy 1.4.1.

1) mu0.py (pure Python calculation of 10^3 mu0 used in SNe Ia cosmology) :
XPS15 : 0.838 s
A1215B : 4.17 s
A1005HA : 5.15 s
TF101 : 9.72 s
Nexus4 : 7.26 s
Jolla : 7.83 s
N9 : 15.4 s
N900 : 29.5 s
N810 : 164 s / 132 s (Easy Debian)

2) mu0_NumPy.py (Python/NumPy calculation of 10^3 mu0 used in SNe Ia cosmology) :
XPS15 : 0.0666 s
A1215B : 0.322 s
A1005HA : 0.515 s
TF101 : 2.23 s
Nexus4 : 0.463 s
Jolla : 0.453 s
N9 : 1.10 s
N900 : 1.93 s
N810 : 13.5 s (Easy Debian)

3) NumPy dot product of two 1000x1000 matrices :
Code:
import time
t1=time.time(); from numpy import *; t2=time.time()
print "NumPy import : %f s" % (t2-t1)
a = random.random_sample((1000,1000))
b = random.random_sample((1000,1000))
c = dot(a,b)
t3=time.time();
print "NumPy dot 1000x1000 : %f s" % (t3-t2)
XPS15 : 0.823 s
A1215B : 7.62 s
A1005HA : 9.84 s
TF101 : 138 s
Nexus4 : 47.3 s
Jolla : 45.1 s
N9 : 77.8 s
N900 : 115 s
N810 : 508 s (Easy Debian)

4) NumPy FFT of a vector (10^6 elements) :
Code:
import time
t1=time.time()
from numpy import *
t2=time.time()
print "NumPy import : %f s" % (t2-t1)
d = linspace(0, 1e3, 1e6)
t3=time.time();
print "NumPy linspace 10**6 : %f s" % (t3-t2)
fft.fft(d)
t4=time.time()
print "NumPy FFT 10**6 : %f s" % (t4-t3)
XPS15 : 0.105 s
A1215B : 0.682 s
A1005HA : 1.03 s
TF101 : 7.35 s
Nexus4 : 0.896 s
Jolla : 0.895 s
N9 : 3.98 s
N900 : 6.79 s
N810 : 51.7 s (Easy Debian)

Conclusions from the above Python & NumPy calculations :
- mu0 using NumPy is 11-14x faster than mu0 with pure Python;
- Nexus 4 and Jolla smartphones with Sailfish have almost the same calculation speed, using 1 CPU core;
- Jolla is 0.7-3.5x faster than N9;
- Jolla is 1.5-6.5x faster than N900;
- Jolla is 10-57x faster than N810;
- N9 @ 1.0 GHz is 48-91% faster than N900 @ 600 MHz, greater than 66.67% expected by clock only;
- N9 is 5-12x faster than N810;
- N900 is 3-6x faster than N810;
- Asus Transformer TF101 (an Android tablet from 2011) has Python 19% slower than Jolla and NumPy 8%-16% slower than N900;
- Asus 1005HA (a netbook released in October 2008) with Atom N270 @ 1.6 GHz CPU is -15% to 3.6x faster than Jolla, 1.1-6.9x faster than N9, 2.7-11x faster than N900, 25-51x faster than N810;
- Asus 1215B (a low-end notebook in 2012) with AMD C-50AMD C-50 CPU is 31%-5x faster than Jolla, 2.4-9x faster than N9, 5-14x faster than N900, 31-75x faster than N810;
- Dell XPS 15 L502X (a high-end notebook in 2012) with Core i7 2670QM CPU is 6-54x faster than Jolla, 16-94x faster than N9, 28-139x faster than N900, 157-616x faster than N810.

See also benchmark of Python & SciPy on some mobile devices.
__________________
Python, C/C++, Qt and CAS developer. For Maemo/MeeGo/Sailfish :
Integral, Derivative, Limit - calculating mathematical integrals, derivatives and limits. SymPy - Computer Algebra System.
MatPlotLib - 2D & 3D plots in Python. IPython - Python interactive shell.
-- My blog about mobile & scientific computing ---
Sailfish : Sony Xperia X, Gemini, Jolla, Jolla C, Jolla Tablet, Nexus 4. Nokia N9, N900, N810.

Last edited by rcolistete; 2014-10-22 at 21:29. Reason: Updated/added timings for Asus 1005HA
 

The Following User Says Thank You to rcolistete For This Useful Post: