performance
Jake2 proves that 3D games written completely in Java can achieve incredible performance with moderate hardware requirements.
The following table shows the framerates of our Jake2 releases. This should give you a first impression of the performance of the current development version.
The fps values are not an absolute performance comparison Java vs C. But they show that at least 60% of C performance are achievable with Java. In comparison with object oriented C++ Code Java would look even better.
The 0.9.2 release shows a big improvent due to the new “fastjogl” OpenGL renderer. The new renderer reduces the number of native interface calls. JNI calls produce a considerable overhead and were the main bottleneck in our application. Jake2 0.9.2 can achieve up to 85% of the framerate of the C version. It depends on the relative performance of the CPU and GPU. With version 0.9.3 we almost closed the gap, mainly by reducing the number of memory allocations inside the game loop. But as you see the Java support for fullscreen modes is still not where it should be. The new release 0.9.4 brings yet another incredible performance boost. Some simple optimizations (vector arrays, optimized memory handling in loops etc.) show remarkable effect on performance and there surely is still room for further improvements.
System
|
Original C Code
|
Jake2-0.9.1 JRE1.5 jogl
|
Jake2-0.9.2 JRE1.5 fastjogl
|
Jake2-0.9.3 JRE1.5 fastjogl
|
Jake2-0.9.4 JRE1.5 fastjogl/lwjgl
|
AMD Athlon XP 2400 Geforce4 MX Windows 2000 800x600 window
|
245 fps
|
172 fps
|
213 fps
|
241 fps
|
260/250 fps
|
AMD Athlon XP 2400 Geforce4 MX Windows 2000 800x600 fullscreen
|
315 fps
|
not supported
|
225 fps
|
235 fps
|
250/282 fps
|
AMD Athlon XP 2400 Geforce4 MX Linux 800x600 window
|
262 fps
|
141 fps
|
212 fps
|
215 fps
|
228/240 fps
|
AMD K6-2 350 Geforce2 MX Windows 2000 800x600 window
|
56 fps
|
21 fps
|
31 fps
|
|
|
|