Ruby has been getting pummeled for the last year or more on the performance subject. They've been working hard at improving it. From my arm chair perspective Python is sitting on it's laurels and not taking this as seriously as it probably should. In general it's possible to make many comments that swirl around religion and approach, one of the things that I've noticed is that wile Python has a much more disciplined developer community they're not using this for the greater good.
Specifically, in looking at a benchmark that was posted, python was an order of magnitude (20 secs vs. 1 sec) slower than ruby. In investigating the performance bottleneck is the random module. This got me to think, why does python have "pickle" and "cPickle"? Comes down to lowest common denominator, or the inability for somebody to write an optimized package that can mimic a python package. To that end why would somebody write big try catch blocks to see if modules exist and if they exist alias their names. Wouldn't it be better if there was a way that if I have an "interface compatible" native (aka C) module that has better performance that there could be a way that python would give it preference. e.g. import random(version=1.2, lang=c) or import random(version=1.2, lang=py) # use the python version by default or import random # use the latest version in the "fastest" code (C given preference) where there could be a nice set of "standard" key value pairs that could provide addtional hints as to what language and version of a library was to be used. -- http://mail.python.org/mailman/listinfo/python-list