aviatorscript icon indicating copy to clipboard operation
aviatorscript copied to clipboard

请教个expressionLRUCache的性能问题

Open happier233 opened this issue 3 years ago • 1 comments

我看到com.googlecode.aviator.AviatorEvaluatorInstance#compile(java.lang.String, java.lang.String, java.lang.String, boolean),这个方法在expressionLRUCache开启的时候,每次都会对expressionLRUCache做synchronized,来达到线程安全的目的。

但多线程场景下,LinkedHashMap_lru实现比其他cache实现性能慢上很多,想了解下当时是怎么考量的。同时我也看到了AviatorEvaluatorInstance对expressionLRUCache和expressionCache做了很多判断和区分逻辑。那有没有可能expressionCache定义成一个interface,然后允许集成方自己实现,然后注入到AviatorEvaluatorInstance中?

这个只是一个带问题性质的讨论,打扰作者了

happier233 avatar Nov 18 '22 04:11 happier233

是的,可以抽象一个 ScriptCache 的接口,然后允许用户设置,有兴趣可以提个 PR

用 LinkedHashMap,只是因为他够简单。

killme2008 avatar Nov 18 '22 06:11 killme2008