51
votes

Possible Duplicate:
is python slower than java/C#?

Ignoring all the characteristics of each languages and focusing SOLELY on speed, which language is better performance-wise?

You'd think this would be a rather simple question to answer, but I haven't found a decent one.

I'm aware that some types of operations may be faster with python, and vice-versa, but I cannot find any detailed information on this. Can anyone shed some light on the performance differences?

4
Languages don't have speed, they have only semantics. If you want to compare speed you must choose specific implementations to compare with each other. - Joachim Sauer
This is the programming equivalent to asking if French is faster than German - Woot4Moo
@Woot4Moo: not exactly. There are (natural) languages that take a lot more words and/or syllables to to convey the same meaning on average. So those could actually be compared (of course the speed at which the speaker speaks is an influence as well, but there's an influence inherent to the language as well). - Joachim Sauer
I think it's reasonable assume that the question is about the implementations, rather than the specifications - Dónal
@Woot4Moo: What part do you disagree with? That the expressiveness of languages differs? - Joachim Sauer

4 Answers

34
votes

If you ignore the characteristics of both languages, how do you define "SPEED"? Which features should be in your benchmark and which do you want to omit?

For example:

  • Does it count when Java executes an empty loop faster than Python?
  • Or is Python faster when it notices that the loop body is empty, the loop header has no side effects and it optimizes the whole loop away?
  • Or is that "a language characteristic"?
  • Do you want to know how many bytecodes each language can execute per second?
  • Which ones? Only the fast ones or all of them?
  • How do you count the Java VM JIT compiler which turns bytecode into CPU-specific assembler code at runtime?
  • Do you include code compilation times (which are extra in Java but always included in Python)?

Conclusion: Your question has no answer because it isn't defined what you want. Even if you made it more clear, the question will probably become academic since you will measure something that doesn't count in real life. For all of my projects, both Java and Python have always been fast enough. Of course, I would prefer one language over the other for a specific problem in a certain context.

13
votes

There is no good answer as Python and Java are both specifications for which there are many different implementations. For example, CPython, IronPython, Jython, and PyPy are just a handful of Python implementations out there. For Java, there is the HotSpot VM, the Mac OS X Java VM, OpenJRE, etc. Jython generates Java bytecode, and so it would be using more-or-less the same underlying Java. CPython implements quite a handful of things directly in C, so it is very fast, but then again Java VMs also implement many functions in C. You would probably have to measure on a function-by-function basis and across a variety of interpreters and VMs in order to make any reasonable statement.

8
votes

Different languages do different things with different levels of efficiency.

The Benchmarks Game has a whole load of different programming problems implemented in a lot of different languages.