has anyone benchmarked Excelsior JET compile-to-native against a standard java runtime?

Viewed 4793

Has anyone ever tried benchmarking a java application compiled to native using Excelsior JET against the same application running just-in-time on a normal java runtime? The only benchmark I can find is hosted on Excelsior's website and is for a single application; I'd like to see some independent results.

My application has both high CPU and memory usage (it's training machine learning models). I don't expect a performance increase with using Jet, but I may need to run on an environment that doesn't have the java runtime available (hence the compile to native) and I need to know if the performance would be much worse.

I know that Excelsior have an eval. available, but I'm hoping to save the time downloading, configuring, testing it etc...

4 Answers

I used the Excelsior JET 15.0 for Windows test version to natively compile a CPU and memory intensive application of mine.

The native compilation time took around 40 minutes. The original JAR file was 10MB (due to libraries) and the native EXE 60MB due to the bundled JRE 8 so this isn't great unless not requiring a Java installation is desired. In terms of startup time, JET seems to do better. In terms of consistent feel of the Swing GUI JET also won or at least tied with the JRE. In terms of performance and memory usage I surprisingly could not identify a reasonable improvement: Sometimes the JIT JAR won and sometimes the native binary. They performed fairly evenly.

In terms of reverse engineering protection, JET is the best I've seen since the native binary is huge, stripped and you cannot sanely navigate or decompile it whatsoever to extract what you want. On the other hand, .jar files and .class files are very easy to decompile back to almost exactly the same source code.

Overall, you may decide whether going through the trouble of configuring and potentially properly licensing JET is worth it for your use case since using it does not only have its suggested upsides, it heavily depends on the nature of your project as well.

I just installed the evaluation version of Excelsior Jet 11 64 bit including Maintenance Pack 3 to see if my custom chess engine that I've written in Java gains any performance (elo-score +/- 2100). Unfortunately it doesn't, its speed is almost halved (450k nodes per second instead of 1m on an Intel Q9550). I guess this is the result of the 64 bit version of Excelsior not being as optimized.

My chess engine uses bitboards (64 bit longs) as its chessboard representation and does a lot of bitwise operations. Furthermore it does a lot of array lookups.

Memory consumption is about the same.

Related