aviatorscript
aviatorscript copied to clipboard
请教个expressionLRUCache的性能问题
我看到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中?
这个只是一个带问题性质的讨论,打扰作者了
是的,可以抽象一个 ScriptCache 的接口,然后允许用户设置,有兴趣可以提个 PR
用 LinkedHashMap,只是因为他够简单。