Comparing the run times for the most intensive job in our CI suite. JRuby 9.4 and 10 are both on Java 21 running equivalent settings. JRuby 10 can automatically utilize OpenJDK's AppCDS to improve startup time, and has many other optimizations for straight-line performance.
"Force JIT" here means JIT is enabled with a threshold of zero, causing nearly all methods and blocks to fully optimize and compile to JVM bytecode before running. JRuby 10 includes reductions in the overhead of the JIT and more are coming.
InvokeDynamic also can slow startup even as it improves execution performance. We have worked to reduce the overhead of InvokeDynamic use in JRuby while also utilizing it more effectively.
JRuby 9.4, force JIT, with full invokedynamic optimization.
Finished tests in 1053.596852s, 4.4125 tests/s, 1756.1271 assertions/s.