我正在研究 groovy 代码性能优化。我使用 jvisualvm 连接到正在运行的应用程序并收集 CPU 样本。样本说org.codehaus.groovy.reflection.CachedMethod.inkove占用的 CPU 时间最多。我在示例中没有看到任何其他应用方法。
深入研究 CachedMethod.invoke并了解哪些代码行真正会导致性能下降的正确方法是什么?
谢谢。
UPD:我确实使用Indy,它对我没有帮助。
我没有尝试引入@CompileStatic,因为我想在将groovy 重写为java 之前找到我的瓶颈。
我的问题有点类似于这个线程:调用站点缓存比调用动态更快?
我有一个动态编写 groovy 脚本的代码。脚本模板看起来是这样的:
def evaluateExpression(Map context){
def user = context.user
%s
}
其中%s替换为
user.attr1 == '1' || user.attr2 == '2' || user.attr3 = '3'
从数据库中获取了一组(总共 20 个)替换项。代码从 DB 获取替换,创建 GroovyScript 并评估它。我想瓶颈在于脚本执行。修复它的正确方法是什么?