Performance Benchmarks¶
These historical benchmark graphs were produced with vbench.
These historical benchmark graphs were produced with vbench (ATM with yet to be integrated upstream changes in https://github.com/pydata/vbench/pull/33).
Original repository with the The numpy_vb_common setup script defining various variables and data structures used through-out the bench can be found on github .
Results were collected on a following machine:
- Dual AMD Opteron(tm) Processor 246, 3GB RAM
- Debian wheezy, amd-64 build (chroot on Debian with 3.2.0-4-amd64 kernel)
- Python 2.7.3 64-bit
cpuinfo:
vendor_id : AuthenticAMD
cpu family : 15
model : 5
model name : AMD Opteron(tm) Processor 246
stepping : 8
microcode : 0x46
cpu MHz : 1994.032
cache size : 1024 KB
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx
fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow rep_good nopl
bogomips : 3988.06
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts ttp
Benchmarks Performance Analysis¶
Benchmark | Check | Slowdown % | Reference date | Reference timing | Target timing | Possible recent |
---|---|---|---|---|---|---|
numpy.add.reduce(axis=0)_float16 | ConsistentlyWorse(10) | 189.1 | 2011.06.02 | 7 | 20 | 4e179f0...00a8c0c |
numpy.any_fast | ConsistentlyWorse(10) | 179.4 | 2011.03.29 | 0.0017 | 0.0047 | 0e091af...0625671 |
numpy.all_fast | ConsistentlyWorse(10) | 177.3 | 2011.03.29 | 0.0017 | 0.0047 | f14d5e1...06440c1 |
numpy.small_reduction | ConsistentlyWorse(10) | 84.6 | 2011.04.02 | 0.0024 | 0.0046 | 8bcb756...fb037eb |
median_odd_small | ConsistentlyWorse(10) | 75.5 | 2011.03.18 | 0.018 | 0.031 | eb61066...74b0836 |
median_even_small | ConsistentlyWorse(10) | 74.3 | 2011.03.29 | 0.018 | 0.031 | eb61066...74b0836 |
memcpy_int8 | ConsistentlyWorse(10) | 68.7 | 2011.04.02 | 0.0018 | 0.0024 | fe0f6cc...7e8e7a2 |
numpy.identity(100) | ConsistentlyWorse(10) | 52.2 | 2011.12.04 | 0.009 | 0.014 | 58350f4...cd0b8e7 |
numpy.ones(100) | ConsistentlyWorse(10) | 47.3 | 2011.04.02 | 0.002 | 0.0029 | eb61066...74b0836 |
numpy.linalg.norm(a)_float16 | ConsistentlyWorse(10) | 34.5 | 2014.11.19 | 0.11 | 0.13 | a32625e...4083883 |
numpy.ma.masked_array() | ConsistentlyWorse(10) | 33.4 | 2014.08.04 | 0.022 | 0.028 | e73ee5d...eb61066 |
strided_assign_complex128 | ConsistentlyWorse(10) | 33.2 | 2011.03.26 | 0.023 | 0.03 | cfa095a...9671491 |
min_np.intp | ConsistentlyWorse(10) | 32.3 | 2011.08.26 | 0.021 | 0.028 | fb037eb...31b94e8 |
copyto_8_sparse | ConsistentlyWorse(10) | 31.3 | 2011.08.26 | 0.15 | 0.22 | e73ee5d...eb61066 |
numpy.tril(l10x10) | ConsistentlyWorse(10) | 30.3 | 2014.02.15 | 0.015 | 0.019 | 7be18ed...3b22d87 |
numpy.vstack(l) | ConsistentlyWorse(10) | 29.6 | 2011.04.02 | 0.007 | 0.0089 | 7be18ed...3b22d87 |
numpy.ma.masked_array(l100,t100) | ConsistentlyWorse(10) | 24.1 | 2014.07.30 | 0.034 | 0.042 | eb61066...74b0836 |
numpy.array(l) | ConsistentlyWorse(10) | 21.9 | 2014.07.05 | 0.0027 | 0.0031 | 1657544...7be18ed |
sort_inplace | ConsistentlyWorse(10) | 21.9 | 2011.03.29 | 0.13 | 0.15 | N/A |
a[np.ix_(indexes_, indexes_)]=1 | ConsistentlyWorse(10) | 20.9 | 2014.04.03 | 1.3 | 1.6 | 1657544...7be18ed |
sort | ConsistentlyWorse(10) | 20.8 | 2011.03.29 | 0.14 | 0.15 | N/A |
a[np.ix_(indexes_rand_, indexes_rand_)]=1 | ConsistentlyWorse(10) | 20.3 | 2014.03.27 | 1.3 | 1.6 | e73ee5d...eb61066 |
numpy.array([1]) | ConsistentlyWorse(10) | 18.9 | 2014.06.09 | 0.00099 | 0.0011 | 975267d...25aff4d |
numpy.ones_like(a)_10types | ConsistentlyWorse(10) | 18.6 | 2012.03.10 | 0.2 | 0.23 | eb61066...74b0836 |
numpy.add.reduce(axis=1)_int64 | ConsistentlyWorse(10) | 18.2 | 2011.07.06 | 2.1 | 2.5 | 23f20aa...68ffaec |
numpy.add.reduce(axis=1)_int32 | ConsistentlyWorse(10) | 17.2 | 2014.11.19 | 1.7 | 2 | 975267d...25aff4d |
numpy.add.reduce(axis=1)_longfloat | ConsistentlyWorse(10) | 16.5 | 2011.06.09 | 4.8 | 5.5 | e73ee5d...eb61066 |
numpy.arange(100) | ConsistentlyWorse(10) | 15.5 | 2014.06.30 | 0.00077 | 0.00089 | fb037eb...31b94e8 |
numpy.array([]) | ConsistentlyWorse(10) | 14.2 | 2014.05.16 | 0.00076 | 0.00084 | 975267d...25aff4d |
numpy.not_bool | ConsistentlyWorse(10) | 13.6 | 2014.10.20 | 0.0024 | 0.0028 | b6903d7...029662b |
where_2_broadcast | ConsistentlyWorse(10) | 10.5 | 2014.05.26 | 0.04 | 0.044 | fe7816d...fb40fe8 |
numpy.ldexp(a,a)_3types | ConsistentlyWorse(10) | 10.5 | 2014.05.26 | 0.57 | 0.63 | a435de3...0e091af |
numpy.hstack(l) | ConsistentlyWorse(10) | 10.2 | 2011.03.27 | 0.0068 | 0.0074 | c7ad14f...fe0f6cc |
numpy.right_shift(a,a)_3types | ConsistentlyWorse(10) | 9.8 | 2014.10.21 | 0.093 | 0.1 | 5eb6e36...6a4aa59 |
numpy.add.reduce(axis=0)_int16 | ConsistentlyWorse(10) | 9.6 | 2014.10.21 | 1.7 | 1.9 | 8bcb756...fb037eb |
numpy.add.reduce(axis=0)_int64 | ConsistentlyWorse(10) | 8.7 | 2014.10.21 | 2.3 | 2.5 | e73ee5d...eb61066 |
bincount_weights | ConsistentlyWorse(10) | 8.4 | 2014.03.16 | 0.43 | 0.47 | 68ffaec...8bcb756 |
where_2 | ConsistentlyWorse(10) | 7.7 | 2014.03.13 | 0.041 | 0.044 | 22ae193...e065a26 |
numpy.spacing(a)_7types | ConsistentlyWorse(10) | 7.6 | 2014.10.21 | 0.91 | 0.98 | 8e113c9...9636420 |
numpy.add.reduce(axis=1)_float16 | ConsistentlyWorse(10) | 7.0 | 2014.03.30 | 5.1 | 5.6 | 53a202b...c2d7845 |
numpy.einsum(‘ijk,jil->kl’, a, b) | ConsistentlyWorse(10) | 6.9 | 2011.04.03 | 63 | 69 | 53a202b...c2d7845 |
numpy.array(1) | ConsistentlyWorse(10) | 6.8 | 2014.06.09 | 0.00043 | 0.00052 | bd8d70a...3dfc6d6 |
percentile | ConsistentlyWorse(10) | 6.8 | 2014.10.21 | 0.099 | 0.11 | 22ae193...e065a26 |
cont_assign_int8 | ConsistentlyWorse(10) | 6.4 | 2014.06.08 | 0.0014 | 0.0015 | eb61066...74b0836 |
numpy.less_than_scalar2_numpy.float32 | ConsistentlyWorse(10) | 6.1 | 2014.05.19 | 0.0074 | 0.0078 | 8cdc5f5...73d87a7 |
memcpy_complex128 | ConsistentlyWorse(10) | 5.9 | 2013.09.22 | 0.076 | 0.081 | 0d30aef...066be28 |
copyto_8_dense | ConsistentlyWorse(10) | 5.1 | 2011.08.26 | 0.18 | 0.19 | fb037eb...31b94e8 |
cont_assign_int16 | ConsistentlyWorse(10) | 5.1 | 2014.05.19 | 0.0036 | 0.0041 | 25aff4d...f14d5e1 |
numpy.random.normal(size=(100,100)) | ConsistentlyWorse(10) | 5.0 | 2012.01.28 | 0.83 | 0.85 | befb246...22ae193 |
a[indexes_] | ConsistentlyWorse(10) | 5.0 | 2014.07.20 | 0.25 | 0.26 | c7ad14f...fe0f6cc |
numpy.empty(100) | ConsistentlyWorse(10) | 5.0 | 2014.06.08 | 0.00093 | 0.001 | 7b3809b...df9db6e |
numpy.add.reduce(axis=0)_complex64 | ConsistentlyWorse(10) | 4.9 | 2012.09.02 | 2.8 | 2.9 | eb61066...74b0836 |
numpy.less_than_scalar2_numpy.float64 | ConsistentlyWorse(10) | 4.7 | 2014.06.30 | 0.011 | 0.012 | caeb888...002b0de |
a[indexes_rand_] | ConsistentlyWorse(10) | 4.6 | 2014.07.20 | 0.25 | 0.26 | c7ad14f...fe0f6cc |
median_even_inplace | ConsistentlyWorse(10) | 4.6 | 2014.10.16 | 0.051 | 0.052 | eb61066...74b0836 |
numpy.add_scalar_conv_complex | ConsistentlyWorse(10) | 4.5 | 2014.11.19 | 0.0013 | 0.0015 | c7ad14f...fe0f6cc |
numpy.ma.masked_array(l100) | ConsistentlyWorse(10) | 4.5 | 2014.05.26 | 1.1 | 1.2 | 23f20aa...68ffaec |
numpy.add_scalar_conv | ConsistentlyWorse(10) | 4.2 | 2014.10.24 | 0.0012 | 0.0014 | fa14ae0...58350f4 |
numpy.signbit(a)_7types | ConsistentlyWorse(10) | 4.2 | 2014.05.26 | 0.32 | 0.33 | 1e72312...860489c |
numpy.linalg.det(a)_int64 | ConsistentlyWorse(10) | 3.7 | 2014.06.02 | 0.09 | 0.093 | e73ee5d...eb61066 |
numpy.linalg.det(a)_int16 | ConsistentlyWorse(10) | 3.5 | 2014.07.04 | 0.085 | 0.087 | c7ad14f...fe0f6cc |
numpy.linalg.norm(a)_int32 | ConsistentlyWorse(10) | 3.4 | 2014.10.21 | 0.027 | 0.027 | 1246dbc...8dd530b |
numpy.zeros(100) | ConsistentlyWorse(10) | 3.3 | 2014.06.08 | 0.00096 | 0.001 | fa14ae0...58350f4 |
numpy.power(a,a)_10types | ConsistentlyWorse(10) | 3.2 | 2011.05.07 | 3.4 | 3.5 | e73ee5d...eb61066 |
numpy.add.reduce(axis=0)_complex256 | ConsistentlyWorse(10) | 2.8 | 2013.04.03 | 12 | 13 | fe7816d...fb40fe8 |
numpy.add.reduce(axis=1) | ConsistentlyWorse(10) | 2.7 | 2014.04.03 | 38 | 39 | 975267d...25aff4d |
strided_copy_complex128 | ConsistentlyWorse(10) | 2.6 | 2014.06.02 | 0.1 | 0.11 | c2d7845...9bfd76e |
numpy.linalg.norm(a)_float64 | ConsistentlyWorse(10) | 2.5 | 2014.10.21 | 0.034 | 0.034 | c7ad14f...fe0f6cc |
numpy.diagflat(l100) | ConsistentlyWorse(10) | 2.2 | 2014.06.30 | 0.029 | 0.03 | 975267d...25aff4d |
numpy.linalg.norm(a)_complex64 | ConsistentlyWorse(10) | 2.1 | 2014.10.21 | 0.051 | 0.052 | c7ad14f...fe0f6cc |
a[:,indexes_]=1 | ConsistentlyWorse(10) | 2.1 | 2014.06.02 | 0.4 | 0.41 | fe7816d...fb40fe8 |
a[:,indexes_] | ConsistentlyWorse(10) | 2.1 | 2014.10.21 | 0.46 | 0.47 | fb037eb...31b94e8 |
numpy.diagflat([l50, l50]) | ConsistentlyWorse(10) | 2.1 | 2014.07.03 | 0.03 | 0.031 | 975267d...25aff4d |
a[indexes_]=1 | ConsistentlyWorse(10) | 2.0 | 2014.06.08 | 0.28 | 0.28 | eb61066...74b0836 |
numpy.floor(a)_7types | ConsistentlyWorse(10) | 2.0 | 2014.03.30 | 0.84 | 0.86 | 8cdc5f5...73d87a7 |
numpy.sin(a)_10types | ConsistentlyWorse(10) | 1.9 | 2014.10.26 | 7 | 7.1 | 060aed9...c7ad14f |
a[:,indexes_rand_]=1 | ConsistentlyWorse(10) | 1.9 | 2014.06.02 | 0.46 | 0.47 | fe7816d...fb40fe8 |
numpy.linalg.norm(a)_float32 | ConsistentlyWorse(10) | 1.9 | 2014.10.11 | 0.029 | 0.03 | c7ad14f...fe0f6cc |
numpy.rint(a)_10types | ConsistentlyWorse(10) | 1.9 | 2014.10.17 | 1.3 | 1.4 | 49b0628...db710ce |
numpy.add_scalar2_numpy.float32 | ConsistentlyWorse(10) | 1.8 | 2014.07.06 | 0.011 | 0.013 | 4d94317...927cfcf |
numpy.isnan(a)_10types | ConsistentlyWorse(10) | 1.8 | 2014.10.19 | 0.41 | 0.42 | 6457686...8e113c9 |
numpy.frexp(a)_7types | ConsistentlyWorse(10) | 1.8 | 2014.06.02 | 0.9 | 0.93 | 256d256...23ee379 |
numpy.random.weibull(1, size=(100,100)) | ConsistentlyWorse(10) | 1.5 | 2013.09.22 | 1.2 | 1.3 | 68ffaec...8bcb756 |
numpy.sqrt(a)_10types | ConsistentlyWorse(10) | 1.5 | 2014.07.10 | 2.2 | 2.3 | 424b56e...12472aa |
strided_copy_float32 | ConsistentlyWorse(10) | 1.5 | 2014.06.08 | 0.02 | 0.02 | fb40fe8...256d256 |
numpy.isfinite(a)_10types | ConsistentlyWorse(10) | 1.4 | 2014.10.19 | 0.47 | 0.48 | 280f605...fe7816d |
numpy.isinf(a)_10types | ConsistentlyWorse(10) | 1.3 | 2014.10.19 | 0.65 | 0.65 | fe7816d...fb40fe8 |
numpy.conjugate(a)_10types | ConsistentlyWorse(10) | 1.3 | 2014.10.16 | 0.49 | 0.5 | eb61066...74b0836 |
vb_savez_squares | ConsistentlyWorse(10) | 1.2 | 2014.07.10 | 4.5e+02 | 4.5e+02 | eb61066...74b0836 |
numpy.conj(a)_10types | ConsistentlyWorse(10) | 1.2 | 2014.11.17 | 0.49 | 0.5 | 7eff5b8...d6d6795 |
numpy.divide_scalar2_numpy.float32 | ConsistentlyWorse(10) | 1.2 | 2014.06.30 | 0.031 | 0.031 | c7ad14f...fe0f6cc |
numpy.divide_scalar2_inplace_numpy.float32 | ConsistentlyWorse(10) | 1.1 | 2014.06.02 | 0.031 | 0.031 | eb61066...74b0836 |
numpy.add.reduce(axis=0) | ConsistentlyWorse(10) | 0.9 | 2014.11.11 | 57 | 58 | eb61066...74b0836 |
numpy.nextafter(a,a)_7types | ConsistentlyWorse(10) | 0.8 | 2014.10.16 | 1 | 1 | 8cdc5f5...73d87a7 |
numpy.true_divide(a,a)_10types | ConsistentlyWorse(10) | 0.7 | 2011.03.26 | 2 | 2.1 | 99329f9...4e32035 |
numpy.random.poisson(10,size=(100,100)) | ConsistentlyWorse(10) | 0.6 | 2014.06.02 | 4.3 | 4.3 | e73ee5d...eb61066 |
numpy.log(a)_10types | ConsistentlyWorse(10) | 0.5 | 2014.06.02 | 5.9 | 5.9 | 53a202b...c2d7845 |
numpy.divide_scalar2_inplace_numpy.float64 | ConsistentlyWorse(10) | 0.5 | 2014.06.17 | 0.066 | 0.067 | eb61066...74b0836 |
cont_assign_float64 | ConsistentlyWorse(10) | 0.4 | 2014.07.16 | 0.015 | 0.015 | 8bcb756...fb037eb |
numpy.divide_scalar2_numpy.float64 | ConsistentlyWorse(10) | 0.4 | 2014.07.03 | 0.066 | 0.067 | eb61066...74b0836 |
numpy.absolute(a)_10types | ConsistentlyWorse(10) | 0.3 | 2014.01.15 | 1 | 1.1 | fb037eb...31b94e8 |
strided_copy_int8 | ConsistentlyWorse(10) | -0.1 | 2014.06.02 | 0.018 | 0.018 | 5a78905...1246dbc |