[Numpy-discussion] 30% speedup when deactivating NumArray.__del__ !!!
Norbert Nemec
Norbert.Nemec.list at gmx.de
Fri Jan 28 13:39:12 EST 2005
Hi there,
indeed my suspicion has proven correct:
Am Donnerstag 27 Januar 2005 21:36 schrieb Francesc Altet:
[...]
> For that goal, I selected the next small benchmark:
>
> import numarray
> a = numarray.arange(2000)
> a.shape=(1000,2)
> for j in xrange(1000):
> for i in range(len(a)):
> row=a[i]
[...]
> So, I've tried to run the profile module included in the standard
> library in order to see which are the hot spots in python:
>
> $ time ~/python.nobackup/Python-2.4/python -m profile -s time
> create-numarray.py
> 1016105 function calls (1016064 primitive calls) in 25.290 CPU
> seconds
>
> Ordered by: internal time
>
> ncalls tottime percall cumtime percall filename:lineno(function)
> 1 19.220 19.220 25.290 25.290 create-numarray.py:1(?)
> 999999 5.530 0.000 5.530 0.000 numarraycore.py:514(__del__)
> 1753 0.160 0.000 0.160 0.000 :0(eval)
[...]
This benchmark made me suspicious since I had already found it odd before that
killing a numarray calculation with Ctrl-C nearly always gives a backtrace
starting in __del__
I did the simple thing: simply comment out the NumArray.__del__ routine
(numarraycore.py, line 514, current CVS version)
The result is astonishing:
Vanilla numarray:
nobbi at Marvin:~/tmp $ time python create-array.py
real 0m9.457s
user 0m8.851s
sys 0m0.038s
NumArray.__del__ commented out:
nobbi at Marvin:~/tmp $ time python create-array.py
real 0m6.512s
user 0m6.065s
sys 0m0.021s
30% speedup !!!!!!
Doing a detailed benchmarking shows similar results.
I don't think I have to go on about this at this point. It seems clear that
__del__ has to be avoided in such a central position.
Ciao,
Norbert
--
_________________________________________Norbert Nemec
Bernhardstr. 2 ... D-93053 Regensburg
Tel: 0941 - 2009638 ... Mobil: 0179 - 7475199
eMail: <Norbert at Nemec-online.de>
More information about the NumPy-Discussion
mailing list