我试图通过在 Java 应用程序中调用 groovy eval(string) 方法来追踪性能问题的根源。如果我执行以下代码;
String pattern = "test = ['one','two','three']";
engine.eval(pattern)
它几乎可以立即运行(0 到 1 毫秒)
但是,如果我说以下
String first = "['one','two','three']";
String pattern = "test = " + first; // "identical" String to first approach
engine.eval(pattern)
运行大约需要 30+ 毫秒。
更糟糕的是,在数千次调用之后,它会高达 60 - 70 毫秒,尽管我并不关心这两个实现之间的时间增量。
关于为什么会发生这种情况的任何解释/关于如何避免这种情况的建议?我怀疑它与 Java 和/或 Groovy 编译器有关,我已经开始研究 compile() 方法,但如果有一种简单的方法可以使现有代码工作,我更喜欢它(更少的东西可以改变它方法)。