Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How to make python run faster

1 view
Skip to first unread message

一首诗

unread,
Apr 14, 2008, 9:48:47 AM4/14/08
to
I read this article on http://kortis.to/radix/python_ext/

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.

lbon...@yahoo.com

unread,
Apr 14, 2008, 9:59:43 AM4/14/08
to
On Apr 14, 8:48 am, 一首诗 <newpt...@gmail.com> wrote:

> But, it is still not as fast as 1.


So if speed is the #1 design goal, use pure C. If not, develop in
pure Python and, if the application is too slow, profile the code and
look for bottlenecks that can be optimized. There's a good chance
that they can be resolved algorithmically, not by simply dropping down
to C.

J Sisson

unread,
Apr 14, 2008, 3:40:57 PM4/14/08
to lbon...@yahoo.com, pytho...@python.org
2008/4/14 <lbon...@yahoo.com>:

Profiling python code can help spot bottlenecks that would *still be bottlenecks* if translated directly to C, so I definitely agree here...given a big enough problem space, a bad algorithm will run slow(er) regardless of language or hardware.

--
Computers are like air conditioners...
They quit working when you open Windows.

king kikapu

unread,
Apr 14, 2008, 4:09:40 PM4/14/08
to
On 14 Απρ, 16:48, 一首诗 <newpt...@gmail.com> wrote:
> I read this article onhttp://kortis.to/radix/python_ext/

I have experimented too with this scenario. My conclusion is that it
aint worth it to mess with C. Program only in Python and when the time
comes that you want to speed up something, just use Psyco on this. And
that will be more than enough.

Gabriel Genellina

unread,
Apr 14, 2008, 9:23:28 PM4/14/08
to pytho...@python.org
En Mon, 14 Apr 2008 10:48:47 -0300, 一首诗 <newp...@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)

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

0 new messages