Just came across this as an example where using Groovy 2.4.6 invokedynamic seems to have been much slower than the older callsite caching mechanism: https://www.linkedin.com/pulse/how-make-groovy-fast-java-david-e-jones (https://dzone.com/articles/how-to-make-groovy-as-fast-as-java)

Quote:
"While Groovy has performance options that allow you to keep your code dynamically typed I never had good results with them. For Moqui Framework using the Indy compiler and runtime (for Java invokedynamic) actually made it significantly slower! The best option for code that needs to run fast is the @CompileStatic annotation. When you apply this annotation you can't use Groovy features that depend on dynamic typing, but fortunately most of the more useful features still work just fine."

I can totally understand the pull to get rid of large, old code parts - but if this holds for more projects, I expect it will not go down well with (dynamic) Groovy users...
mg


On 21.11.2017 17:38, Jochen Theodorou wrote:


Am 21.11.2017 um 08:28 schrieb Paul King:
The "double" build is because of indy vs non-indy (one wipes out the other) because of some assumptions that keep other parts of the build simple. Could no doubt be streamlined given some TLC.

Last I checked there were different performance characteristics between indy/non-indy. We haven't gotten around to working out the best path forward yet that will give us one set of jars without losing performance in some scenarios. Again, just needs some time dedicated to it.

I don't see the old callsite caching still working properly in a Java9 world, so it is time to cut loose

bye Jochen


Reply via email to