This section provides some tips on collecting performance numbers with Jikes RVM.
Which boot image should I use?
To make a long story short the best performing configuration of Jikes RVM will almost always be
production. Unless you really know what you are doing, don't use any other configuration to do a performance evaluation of Jikes RVM.
Any boot image you use for performance evaluation must have the following characteristics for the results to be meaningful:
- config.assertions=none. Unless this is set, the runtime system and optimizing compiler will perform fairly extensive assertion checking. This introduces significant runtime overhead. By convention, a configuration with the Fast prefix disables assertion checking.
- config.bootimage.compiler=opt. Unless this is set, the boot image will be compiled with the baseline compiler and virtual machine performance will be abysmal. Jikes RVM has been designed under the assumption that aggressive inlining and optimization will be applied to the VM source code.
- Any configuration that performs opt compilation at runtime (config.include.aos=1 should be built with config.include.all-classes=1). This includes the optimizing compiler and associated support classes in the boot image where they can be optimized by the boot image compiler. By convention, configurations that include the opt compiler in the boot image have the Full or Fast prefix. Configurations where config.include.all-classes is not set to 1 that use the optimizing compiler will dynamically load it (which will force it to be baseline compiled).