Re: Why is Java so slow????
Daniel Pitts wrote:
Ramon F Herrera wrote:
On Nov 19, 3:28 pm, Java Performance Export
<java.performance.exp...@gmail.com> wrote:
Hi all,
I'm wondering if anyone can help me understand why my Java is being
very slow compared to an equivalent program written in "C".
Larry:
I am as much of a Java fan and advocate as the next Java developer,
but let's face it: Java is slower than native code. It has to be.
Your short answer is: that's the price we have to pay for portability,
interoperability and freedom.
-Ramon
60 times slower seems like an error in the benchmark though, not a
fundamental issue with Java performance.
My suggestion would be to write a program that counts the number of
primes between 1 and 1000000 (or something like)
Don't forget, there is a start-up cost with Java, so you should start
your timer before the work loop, not before the program starts.
Java is not always slower than "native" code. For one thing, significant
amounts of Java programs run as native code. For another, the JVMs have
gotten *very* smart about optimization.
Java takes a long time to start up because you have to load the JVM. As
Daniel pointed out, a valid benchmark will kick off its timing after the
program and all the library classes load.
Java is not designed for quick little utilities. Its greatest strength is in
full-scale programs that run for a while. Under those conditions, some
benchmarks run faster in Java than in statically-compiled languages.
To give a blanket assertion that Java "has to be" slower than "native" code
betrays a lack of knowledge of JVM techniques and current benchmarks.
Even when Java tests slower than C++ (say), as it often does, it's by a factor
of about 2 or 3 to 1, not 60 to 1. Again, this is after the program and JVM
have loaded. There's no denying that load time for the JVM (on most PCs) is a
large overhead for Java programs.
--
Lew