如何提高groovyclassloader.loadclass的性能?

kadbb459  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(156)

我在java项目中使用groovy3.0.6作为脚本语言,允许用户通过groovy脚本在运行时扩展应用程序。有些用户有几百个脚本片段。我在用 GroovyClassLoader 加载它们(也 CompileStatic ,但这种影响似乎可以忽略不计)。
我的问题是 parseClass 方法非常慢(每个脚本的编译时间超过1秒)。下面是编译一组脚本的junit测试的探查器输出:

呼叫树。注意,我让测试运行了724秒,groovy消耗了87%的编译时间。我觉得很奇怪 LexerATNSimulator.getReachableConfigSet 耗费了那么多时间。。。

试运行的热点。不出所料,这里除了groovy(和java.util)什么都没有。
源代码提供给 GroovyClassLoader.parseClass(...) 方法作为常规 String . 我确实有一个定制的代码缓存,但是当有数百个代码段需要编译时,单个脚本的编译会给我的应用程序带来很大的困难。
我能做些什么来减少编译时间吗?他们正在削弱目前的用户体验。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题