首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么javac连简单的代码都不优化呢?

为什么javac连简单的代码都不优化呢?
EN

Stack Overflow用户
提问于 2012-11-29 02:19:43
回答 2查看 800关注 0票数 8

给定以下代码:

代码语言:javascript
复制
public class MainClass {
    public static int f(){
        int i=0;
        i++;
        return i;
    }
}

编译器javac生成以下代码:

代码语言:javascript
复制
Compiled from "MainClass.java"
public class latte_jvm.MainClass {

  public static int f();
    Code:
       0: iconst_0
       1: istore_0
       2: iinc          0, 1
       5: iload_0
       6: ireturn
}

函数f做了一件非常简单的事情--它只返回1。它被直接翻译了,以至于我很难相信java编译器会做任何优化。为什么java编译器创建者决定不在编译阶段做这样的优化?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-29 02:21:24

是如此直接地被翻译,以至于我很难相信java编译器会做任何优化。

确实如此。大多数Java优化都是在JIT时执行的。Java维护者很久以前就发现,在许多情况下,在编译时执行的优化实际上会阻碍在JIT时进行更重要的优化。

几年来,-O命令行参数什么也没有做--而且是故意这样做的。

票数 17
EN

Stack Overflow用户

发布于 2012-11-29 04:17:29

此外,通过将优化转移到JVM,所有基于JVM的语言都可以受益。编译器(不仅仅是javac)有一项相对容易的工作;语言发明者不必是优化专家。

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

https://stackoverflow.com/questions/13611829

复制
相关文章

相似问题

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