Is python very slow compared to C

Steven D'Aprano steve at REMOVETHIScyber.com.au
Sun Feb 12 09:03:39 EST 2006


On Sun, 12 Feb 2006 03:03:20 -0800, bearophileHUGS wrote:

> Steven D'Aprano>Very slow to do what, compared to what? The decay time
> of the tau meson?<
> 
> Probably every answer I can give you is wrong for you, so answering is
> almost useless... 

We do actually agree. You did explain why the speed of the language itself
is rarely the critical factor. My criticism is that whatever good your
post would have done was nullified by your opening comment stating that
Python is very slow -- a comment which I think is not only harmful, but
wrong, benchmarks like the one you linked to not withstanding.

I think it is wrong to call Python "very slow" just because it is slower
than some other language or languages, for the same reason it would be
wrong to describe the population of the UK as "very low" because 60
million people is a smaller number than China or India's one billion plus.
Doing so merely reinforces the premature optimizer's message that any
language that isn't C (and sometimes Lisp) is "not fast enough".

The benchmark you pointed to are of limited use for application
developers. (Their value to language designers is another story.) Given
that Ocaml is (say) 200 times faster than Python on average, it tells the
application developer virtually nothing about the performance of his
application. And that's what user's care about -- they couldn't care less
about binary trees or partial sums, they care about how long it takes to
render a JPEG, open an email, save their files, query the database,
display a window, and so forth. Few application level tasks are limited by
the speed of the language, not these days.

You don't believe me? Consider the following:

When you drag your mouse over text in a graphical text editor, the text
highlights. How much money would you be prepared to pay to make that
highlighting occur 200 times faster? $100? $1? One cent? Chances are you
wouldn't pay a thing, because it is already fast enough, and making it
faster is of zero value to you -- even if highlighting ten gigabytes of
text might be uncomfortably slow.

What about opening an email? How much would you pay to reduce the time it
takes to open and display an email from a hundredth of a second to
virtually instantaneously? I suggest that most people would consider 0.01s
to already be be "virtually instantaneously".

The important question isn't "is Python fast or slow?", it is "is Python
fast enough?". That's a question that doesn't have a simple answer,
because it depends. Fast enough to do what?

But, in general, more often than not, Python is fast enough. The extra
value of using something like Lua or Ocaml or even C is just not enough to
make up for the disadvantages of using those languages. 

Of course Python isn't always fast enough. Please don't waste your time
coming up with practical examples where pure Python is objectively too
slow for a certain task, because you won't be telling me anything I don't
already know. 

But the developer doesn't have to write pure Python, he can call a module
written in C, or change the algorithm, or find another way to accomplish
the same end result. Or even decide that for this specific task, Python is
not the language to use. These are all good solutions, but they don't mean
that Python is "very slow" in general. Even C is not always fast enough,
but we wouldn't say C is "very slow" just because it can't calculate the
first million Mersenne Primes in twenty milliseconds.


-- 
Steven.




More information about the Python-list mailing list