# Small benchmark to get the even point where the threading code # performs better than the serial code. See issue #36 for details. import numpy as np import numexpr as ne from numpy.testing import assert_array_equal from time import time def bench(N): print "*** array length:", N a = np.arange(N) t0 = time() ntimes = (1000*2**15) // N for i in xrange(ntimes): ne.evaluate('a>1000') print "numexpr--> %.3g" % ((time()-t0)/ntimes,) t0 = time() for i in xrange(ntimes): eval('a>1000') print "numpy--> %.3g" % ((time()-t0)/ntimes,) if __name__ == "__main__": print "****** Testing with 1 thread..." ne.set_num_threads(1) for N in range(10, 20): bench(2**N) print "****** Testing with 2 threads..." ne.set_num_threads(2) for N in range(10, 20): bench(2**N)