benchmarking java against c/c++ for interactive scientific visualization
Interactive scientific visualization applications require both high performance graphics and numerical computation capabilities. C/C++ programs are able to take direct advantage of specialized graphics rendering hardware (referred to as a Graphics Processing Unit or GPU) for display and special SIMD instructions within the CPU for computation. The former using for example the OpenGL library and latter using compiler extensions. Software developed in Java offers portability, robustness and security. However, the graphics rendering performance, memory efficiency, and computational speed of Java for visualization of large scientific data sets has not been well characterized. Benchmarking experiments were done using the JLoop (Java) and Loop (C/C++) visualization software for animation of 2D datasets. Preliminary results for six different hardware platforms showed that compared to the C/C++ version, the Java implementation was four to five times slower for graphics image animation, used on average 2.5 to three times more memory, and was up to 3.6 times slower using a pure numerical benchmark that simulated image pixel operations. Such benchmarks should be used to improve the Java VM performance across platforms, similar to JIT-compiler design.
benchmarking java c/c++ high performance cross-platform visualization java advanced imaging