目录
1 collection 数据场景性能对比
场景示例:满足 categoryIdSet.contains(categoryId) 的条件。下面会根据这个表达式设计测试方案。
1.1 测试场景说明
这里以实际性能测试的方法名作为场景代号。
1.1.1 Java 代码执行场景
-
executeWithoutExpression:不用表达式,直接运行 Java 代码
1.1.2 aviator 场景
-
场景特性对比
场景代号 |
是否编译 |
是否预编译 |
编译结果是否缓存 |
---|---|---|---|
aviatorValidate |
N |
N |
N |
aviatorValidateWithPreviewCachedCompile |
Y |
Y |
Y |
aviatorValidateWithCachedCompile |
Y |
N |
Y |
-
场景特性详细说明
-
编译:调用 aviator 的 compile 方法,将表达式编译成字节码
-
预编译(线程安全):全局生成唯一一个编译后的对象,每次执行表达式的时候复用这个编译后的对象。因为实际业务场景下表达式是基本不变的,所以在可穷举的情况下,预先可以做好 aviator 的编译,后面需要变更的只是变量的值而已。
-
缓存编译结果: aviator 支持缓存编译结果,这样如果每次解析的表达式相同的时候,则可以从全局缓存中获取。另外提一下,这个缓存采用的是 LRU 淘汰策略。
-
1.1.3 spel 场景
-
场景特性对比
场景代号 |
是否引入 |
---|