On 05/22/2010 02:43 AM, sturlamolden wrote:
That only applies to CPU bound program code (most program code is I/O
bound), and only to computational bottlenecks (usually less than 5% of
the code) in the CPU bound programs. Today, most programs are I/O
bound: You don't get a faster network connection or harddrive by using
C. In this case, performance depends on other factors than choice of
language. That is why Mercurial (written in Python) can be much faster
than SVN (written in C).

For computational bottlenecks we might want to try high-performance
numerical libraries first. If that does not help, we can try to
replace some Python with C.

Just as an aside, last I checked, mercurial had some core code in C for speed. But that doesn't negate your line of reasoning, rather it cements it -- they found it was most productive to work in Python, but needed the core bits to improve in speed so rewrote them in C.

I'd also include that a change in algorithm can be a big help for speeding up CPU-bound code. It doesn't matter much if you're using Python or hand-coding that inner loop in C/ASM, if you're using a O(2^N) algorithm. I find it easier to write good/speedy algorithms in Python because I have a toolkit of built-in data-types (sets, dicts, lists, etc) that I can reach for, without making sure I've added-on certain C libraries.

-tkc
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to