gpt4 book ai didi

java - OGNL 表达式解析与编译

转载 作者:行者123 更新时间:2023-12-02 06:56:02 24 4
gpt4 key购买 nike

在 OGNL 中,建议解析重用的表达式以提高性能。

在查询API时,我还注意到有一个compileExpression方法:

彻底搜索有关编译与解析的信息后,the only article I could find是 Struts 文档的一部分,提到了如何做到这一点,但没有提到它与解析相比的作用。

在什么条件下应该使用编译而不是单独解析,与简单地解析同一表达式相比,编译表达式是否可以获得显着的性能优势?

从方法签名来看,Ognl.parseExpression() 生成一个与输入无关的对象,但 Ognl.compileExpression() 生成一个依赖于给定输入(根和上下文)的对象。这是正确的吗?

最佳答案

那个http://struts.apache.org/release/2.3.x/docs/ognl-expression-compilation.html链接相当旧,我不确定它是否已过时,但这是我编写的关于如何使用基于 javassist 的表达式 JIT 代码的唯一真实文档。

如果您自己直接或间接使用 ognl 使用某些东西显示该区域的性能受到影响,那么这只是一个相关的问题。正常表达式求值机制可能足以满足大多数需求,但这个额外的步骤将基本上是 Java 反射调用链转换为纯 Java 等效项,因此它几乎完全消除了使用 OGNL 时可能因反射而产生的任何命中。

真的,如果您不确定是否需要它,那么您可能不需要。抱歉,如果没有那么多看起来可怕的额外工作,我从来没有抽出时间将这个概念彻底整合到 OGNL 中。可能最好作为 OGNL 中关闭或打开的可选配置设置,但是..如果您愿意,请随意在 github 上 fork。 =)

关于java - OGNL 表达式解析与编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17336742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com