Python any good?
Tim Ottinger
tottinge at indy.rr.com
Mon Feb 17 15:33:19 EST 2003
N D Efford wrote:
> Glen <lpepicel at nycap.rr.com> wrote:
>
>>In fact the only downside to python is that not many people use python!
>
>
> A lot of people use it: enough for O'Reilly to have published seven
> Python books, anyway - eight if you count the one on Jython.
> But if you mean that Python has lived in the shadow of languages like
> Perl for a long while, I wouldn't disagree with you.
>
> However, that is changing. Companies like Industrial Light & Magic
> and Google are coming clean about the importance of Python to
> their work; a number of computer games developers are turning to
> Python to write the scripting and high-level code for their products;
> etc etc...
>
>
>>Also, Python is not fast. It is meant to be a high level language for
>>non-speed critical applications and scripts.
>
> True. The language developers have always held qualities such
> elegance, clarity and ease of maintenance of code in higher
> esteem than sheer performance.
>
> Nick
"Not fast" is always one of those terms that I worry about.
Is python "not fast" becuse it uses a virtual machine? Let's not wind up
the Java, Smalltalk, etc. guys here and have that discussion. Or lets,
and see what conclusions we have.
Is it "not fast" because it has GC? Let's wind up the Java, Smalltalk,
Ruby, and the C++ GC guys on that one and let them roll. Having GC and
an interpreter doesn't mean that adding numbers will take 1/20ths of
seconds.
Certainly there are ways to do things that are not fast. The guys who
work on the core are always finding more efficient ways to do things,
and writing them into the interpreter (why is smalltalk so fast? Same
reason -- the environment becomes faster). A lot of performance talk on
the python ngs is correcting naively slow ways of doing things.
What do you need to go fast? It has a profiler which works quite well.
I found that I'd once written a python program that was clearly not fast
(not fast enough), ran the profiler, and then fixed the stupid mistake I
made. I had a huge loop hidden in a function, and it had a huge
temporary data structure. Duh. And that function was being called on
almost every string that I outputted -- Double-duh. It should have been
obvious, but I was concentrating on getting the desired effect. That's
how those things are. I fixed it in about 5 minutes, and the code was
quite peppy from then on.
Need more than that? there are little boosters like psycho which can
speed things up, and the Parrot guys claim now that they will run Python
faster than Python can. I'm not sure where PyInline is right now, but
that was supposed to make it easy to run modules written in other
languages.
Okay, the problem is partly that interpreters are very
democratic/altruistic, doing the greatest good for the greatest number.
You may have special problems that need special measures. Then you have
the old standbys like Boost and SWIG and the other ways to extend the
interpreter with C or C++.
How fast is fast? What does it take for a language to be considered
fast? Is C++ ever "not fast"?
I just don't want the world thinking that any program written in python
will be too slow for production use. I think that if you look at the
applications in the world that use python, you'll be surprized at how
amazingly well they perform.
Besides, if you have a database, you seldom have to optimize code --
it's almost always the data storage and I/O. <wink> By the way, python
does I/O better all the time, too.
Tim
More information about the Python-list
mailing list