【问题标题】:Is the CIL optimized? Or only the JITted binary?CIL 优化了吗?还是只有 JITted 二进制文件?
【发布时间】:2011-09-18 21:03:26
【问题描述】:

我想知道,当编译器输出到CIL 时,CIL 是否经过优化?假设该语言没有在调试模式下插入额外数据信息,我想知道 JIT 是否完全自行完成所有优化,我认为它可以。

【问题讨论】:

    标签: .net optimization compiler-construction jit cil


    【解决方案1】:

    两者兼而有之。如果您在发布模式下构建,您使用的任何编译器都会在代码进入 CIL 之前对其进行一些优化。 JITter 也有优化。

    通常由编译器完成的优化示例是常量折叠。

    通常在 JIT 级别完成的优化示例是循环展开。

    【讨论】:

    • 这似乎是错误的。 JITer 无法做到的编译器会做什么?你能给我一个编译器优化的例子吗
    • @acidzombie24:JITter 可以做某事并不意味着它必须做某事。 JITter 根本不会尝试一些优化,仅仅是因为 JIT 需要非常快才能不中断用户。通常在前端内部而不是由 JITter 完成的优化示例是常量折叠。
    • @acidzombie24,为什么 JITter 要做所有的工作?编译器可以删除未使用的方法调用、内联代码等。
    • @bzlm:我不确定编译器是否内联——我知道 JITter 会这样做。
    • @acidzombie:常量折叠与const 变量无关。常量折叠将 2+2 替换为二进制文件中的预计算值 4
    猜你喜欢
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    相关资源
    最近更新 更多