gpt4 book ai didi

ANTLR4 - 听众比访客更快?

转载 作者:行者123 更新时间:2023-12-04 01:57:08 24 4
gpt4 key购买 nike

我正在尝试使用 ANTLR4 解析 java 文件并遍历解析树以搜索特定的函数调用。

虽然我可以同时使用VisitorListener 方法来实现这一点,但压力测试表明与 Visitors 相比,Listeners 更快,这与普遍的看法相反。

从理论上讲,访问者应该更快,因为他们只会检查特定节点,而听众会检查所有节点。有人知道为什么会这样吗?

最佳答案

在 ANTLR 中,听众应该比访问者更快,尽管性能差异将不容易衡量,如果有的话。

Listeners 在 ParseTreeWalker 中使用 walker 算法.访客使用AbstractParseTreeVisitor中的算法.两者都“考虑”了所有节点。

除了细微的实现差异之外,一个数量上的差异是访问者调用涉及通用返回类型处理的开销。尽管如此,在任何现代 JVM 中对性能的影响应该可以忽略不计。

关于ANTLR4 - 听众比访客更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775816/

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