Hi, I just tested NumPyPy a bit. I got very long run times for some tests. After some profiling, I identified the array constructor as the main time sink.
This is a small example that makes the point. import cProfile try: import numpy except ImportError: import numpypy as numpy def test(): r = range(int(1e7)) # or 1e6 numpy.array(r) cProfile.run('test()') The numbers are below. NumPyPy is like a factor of five and more slower than NumPy creating an array of the same size from an existing list. I am just curious what the reason is and if you sees this go away in the near future? Thanks, Mike Mac OS X 10.7, Python 2.7.2, NumPy 2.0.0, 1e6 Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.011 0.011 0.255 0.255 <string>:1(<module>) 1 0.002 0.002 0.244 0.244 constr.py:12(test) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 0.210 0.210 0.210 0.210 {numpy.core.multiarray.array} 1 0.032 0.032 0.032 0.032 {range} Mac OS X 10.7, PyPy 1.8 with NumPyPy, 1e6 Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.955 0.955 <string>:1(<module>) 1 0.000 0.000 0.955 0.955 constr.py:12(test) 1 0.955 0.955 0.955 0.955 {_numpypy.array} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 0.000 0.000 0.000 0.000 {range} Mac OS X 10.7, Python 2.7.2, NumPy 2.0.0, 1e7 Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.166 0.166 2.586 2.586 <string>:1(<module>) 1 0.016 0.016 2.420 2.420 constr.py:12(test) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 2.065 2.065 2.065 2.065 {numpy.core.multiarray.array} 1 0.339 0.339 0.339 0.339 {range} Mac OS X 10.7, PyPy 1.8 with NumPyPy, 1e7 Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 10.169 10.169 <string>:1(<module>) 1 0.000 0.000 10.169 10.169 constr.py:12(test) 1 10.169 10.169 10.169 10.169 {_numpypy.array} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 0.000 0.000 0.000 0.000 {range} Windows, Python 2.6.5, NumPy 1.6.1, 1e6 Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.009 0.009 0.242 0.242 <string>:1(<module>) 1 0.000 0.000 0.234 0.234 constr.py:12(test) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 0.191 0.191 0.191 0.191 {numpy.core.multiarray.array} 1 0.042 0.042 0.042 0.042 {range} Windows, PyPy 1.8 with NumPyPy, 1e6 Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 1.375 1.375 <string>:1(<module>) 1 0.000 0.000 1.375 1.375 constr.py:8(test) 1 1.375 1.375 1.375 1.375 {_numpypy.array} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 0.000 0.000 0.000 0.000 {range} Windows, Python 2.6.5, NumPy 1.6.1, 1e7 Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.092 0.092 2.775 2.775 <string>:1(<module>) 1 0.002 0.002 2.683 2.683 constr.py:12(test) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 2.254 2.254 2.254 2.254 {numpy.core.multiarray.array} 1 0.427 0.427 0.427 0.427 {range} Windows, PyPy 1.8 with NumPyPy, 1e7 Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 13.937 13.937 <string>:1(<module>) 1 0.001 0.001 13.937 13.937 constr.py:12(test) 1 13.936 13.936 13.936 13.936 {_numpypy.array} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 0.000 0.000 0.000 0.000 {range} _______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev