我将 Havlak 基准测试的 Java 代码从 Robert Hundt(参见链接)移植到 Groovy。现在我使用 Groovy 2.1.1 运行基准测试,使用动态调用和不调用动态调用,但计算所需的持续时间几乎相同。我做了什么来启用动态调用?我将groovy--indy.jars 从 groovy-2.1.1\indy 复制到 groovy-2.1.1\lib。然后我在 groovy-2.1.1\lib 中删除了所有名称中没有“indy”的 groovy .jar。此后,在 IntelliJ IDEA 中,我启用和禁用了标志 File > Settings > Compiler > Groovy Compiler > Invoke dynamic support。
我只是告诉这个让人们看看我是否正确打开了 indy 支持。但这不是我的问题。我的问题是,由于调用动态,我们可以期望在哪种情况下加快计算时间。我阅读了有关它的文章,但是很难将那里解释的关于 invoke dynamic 所做的事情翻译成“这种代码在 indy 支持下将执行得更快”的声明。Havlak 基准测试做了很多循环,其中通过调用 setter 来更改值。
如果有人对此事有所了解,我会很高兴在这里放弃一些解释:-)。
谢谢,奥利弗