首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >犀牛的优化水平

犀牛的优化水平
EN

Stack Overflow用户
提问于 2015-10-20 15:13:11
回答 1查看 1.6K关注 0票数 0

我正在使用Rhino1.7R4作为我的项目。通过将Rhino的优化级别从0设置为-1(因为我不需要生成额外的类文件),我将得到意想不到的结果。

在Rhino代码中,在Codegen类下根据优化级别集进行一些额外的处理。

代码语言:javascript
复制
if (optLevel > 0) {
       /*
        * Collect all of the contained functions into a hashtable
        * so that the call optimizer can access the class name & parameter
        * count for any call it encounters
        */
        if (tree.getType() == Token.SCRIPT) {
            int functionCount = tree.getFunctionCount();
            for (int i = 0; i != functionCount; ++i) {
                OptFunctionNode ofn = OptFunctionNode.get(tree, i);
                if (ofn.fnode.getFunctionType()
                    == FunctionNode.FUNCTION_STATEMENT)
                {
                    String name = ofn.fnode.getName();
                    if (name.length() != 0) {
                        if (possibleDirectCalls == null) {
                            possibleDirectCalls = new HashMap<String,OptFunctionNode>();
                        }
                        possibleDirectCalls.put(name, ofn);
                    }
                }
            }
        }
    }

这是我在Rhino中唯一能找到的额外代码,如果opt级别> 0,这将是一些额外的字节码优化。但我正在将用例中的优化级别从0更改为-1,以便使用Rhino的解释器模式。

因此,我的问题是,当优化级别从0更改为-1时,犀牛会对字节代码做什么更改?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-20 17:19:05

这个文档仍然更新了Rhino中的各种优化级别:

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Optimization

实际上,当您将优化级别设置为-1时,您将Rhino切换到解释模式,这意味着它执行代码的路径与编译模式下的路径不同。当然,解释模式比编译模式慢得多。我们在Rhino有一个很好的测试套件,并且没有经常看到两者之间的区别,但是当然,我们可能需要修复一些bug。

当你说“我不需要生成额外的类文件”时,这是什么意思?当您在非解释模式下运行Rhino时,它确实会生成字节码,然后执行它,但是除非您显式地这样做,否则它不会生成或保存“类文件”--但是它运行得更快。

最后,1.7R4是几个旧版本,许多bug已经修复。我鼓励你尝试一下最近的版本:

https://github.com/mozilla/rhino

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33240358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档