How to make python run faster

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Mon Apr 14 21:23:28 EDT 2008


En Mon, 14 Apr 2008 10:48:47 -0300, 一首诗 <newptcai at gmail.com> escribió:

> I read this article on http://kortis.to/radix/python_ext/

Note the date (2002) and the Python version used (2.1)

> And I decided to try if it's true.
>
> I write the program in 4 ways:
>
> 1. Pure C
> 2. Python using C extension
> 3. Python using psycho
> 4. Pure Python
>
> And then I used timeit to test the speed of these 4.  Unsurprisingly,
> the time they cost were:
>
> 4 > 3 > 2 > 1
>
> But I did noticed that 2 is a least 3 times slower than 1, not as fast
> as the article stated.
>
> That's quite weird and I thought maybe it's because I am using
> Windows.  I did the same test on Linux and I found 2 only uses 1.5
> times of time of 1.
>
> But, it is still not as fast as 1.

As other have noted, there are two important things to consider:

1) use the right algorithm and the right data structure for the job.  
Usually it's much better to use an O(n) process (if available) than to try  
to microoptimize an O(n²) variant.

2) profile and measure your code to find the critical parts, and apply  
optimizations ONLY on those.

The algorithm used in the article... hmmm, well, this is a public forum  
and there are ladies and minors so I won't use *those* words, but it's  
really horrible, or horrible², and that makes the whole article moot.  
Python has *other* advantages, apart from speed: easy to write meaningful  
code, expresiveness, code easy to understand by others, higher order  
constructs, easy to write prototypes, non trivial OO...
Take the good things from Python and delegate the speed, when required, to  
Cython or psyco or a C extension or a normal C library+ctypes.

-- 
Gabriel Genellina




More information about the Python-list mailing list