[java] Fastest JVM implementation?
I've got a question for all you Java geeks. Here's the situation (it doesn't involve game programming, but does involve squeezing every ounce of performance out of my machines):
I'm setting up a Beowulf cluster of Linux machines to run a distributed simulation that I've written in Java. The initial tests will run for one week, then the longer data runs will last (at least) for months at a time.
I obviously want to use the fastest implementation of the JVM I can get. Even when the difference is measured in mere milliseconds, after running the same program for 30+ days non-stop it will start to have an impact. Since the code will run unmonitored for long periods of time, stability is also of utmost concern.
Any tips/comments/suggestions appreciated. Although I'm always happy to hear the opinions of others, please refrain from tips like "use assembly instead of Java" or "buy a Cray" . Things are the way they are for a reason.
Thanks in advance.
Edited by - Graylien on 10/1/00 8:54:13 PM
------When thirsty for life, drink whisky. When thirsty for water, add ice.
I''ve always found IBM''s vm to be consistently the fastest. BTW, what are you using for parallel message passing?
bobbin : Thanks for the link, it''s exactly what I need (ok...I admit it...I''m too lazy to type "Java benchmarks" into a search engine!).
Jim_Ross : I wrote a small message passing library that uses straight sockets and TCP/IP. It''s nothing fancy, but rather it was designed for maximum flexibilty. I chose this route because the size of my Beowulf cluster is time dependent . During the day (when many users are logged in) my cluster can be reduced to a dozen dedicated machines...but at night I can have hundreds of Pentiums ready to crunch numbers for me.
From what I''ve been told the IBM JVM is usually fastest, and I should be more concerned about the fact that my machines run Linux (i.e. native thread implementation). The IBM Win32 implementation seems to outperform its'' Linux counterpart by a wide margin. This is not good news.
Jim_Ross : I wrote a small message passing library that uses straight sockets and TCP/IP. It''s nothing fancy, but rather it was designed for maximum flexibilty. I chose this route because the size of my Beowulf cluster is time dependent . During the day (when many users are logged in) my cluster can be reduced to a dozen dedicated machines...but at night I can have hundreds of Pentiums ready to crunch numbers for me.
From what I''ve been told the IBM JVM is usually fastest, and I should be more concerned about the fact that my machines run Linux (i.e. native thread implementation). The IBM Win32 implementation seems to outperform its'' Linux counterpart by a wide margin. This is not good news.
------When thirsty for life, drink whisky. When thirsty for water, add ice.
Unfortunately, any windows JVM will run faster. Linux is one of the slowest platforms supported by Java community. Windows has the best JITs going right now, regardless of vendor it seems.
Java does run faster in Windows, but fortunately IBM, who makes what is probably the fastest JVM, are investing heavily in Linux. Here''s a snippet from the site that bobbin''s link points to:
I will have to test my code on both platforms to see just how concerned I should be. There are times when Linux, being not nearly as bloated as Win32, makes up for lost performance in other ways.
Thanks for the replies everyone.
quote:
THE JAVA PERFORMANCE REPORT – PART IIA
All CPU bound tests show Linux JVMs almost as fast as Win32 ones (scientific and engineering types can migrate today).
[snip]
I believe Linux is on the verge of becoming the premier x86 Java performance leader.
I will have to test my code on both platforms to see just how concerned I should be. There are times when Linux, being not nearly as bloated as Win32, makes up for lost performance in other ways.
Thanks for the replies everyone.
------When thirsty for life, drink whisky. When thirsty for water, add ice.
As I am always saying in this forum, but here goes again *sigh*
Using a native code compiler for Java and running the Java in compiled form is the fastest there is.
You can use any number of compilers:
* Java gcc frontend. Works both for Linux and Windows.
* Symantec Visual Cafe 4.0 Expert Edition
* IBM Visual Age for Java - Enterprise Edition.
All of these generate more fast Java code that you can get with any JIT at the moment. If you need as much speed as you can get this is the may to go.
Jacob Marner
Using a native code compiler for Java and running the Java in compiled form is the fastest there is.
You can use any number of compilers:
* Java gcc frontend. Works both for Linux and Windows.
* Symantec Visual Cafe 4.0 Expert Edition
* IBM Visual Age for Java - Enterprise Edition.
All of these generate more fast Java code that you can get with any JIT at the moment. If you need as much speed as you can get this is the may to go.
Jacob Marner
Jacob Marner, M.Sc.Console Programmer, Deadline Games
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement