在我看来,当你编写一个C程序时,编译器知道源和目标平台(缺少一个更好的术语)并且可以优化它正在构建代码的机器.但在java中,编译器可以做的最好的是对字节码进行优化,这可能很好,但是jvm中仍然有一层必须解释字节码,并且字节码离最终机器架构的转换距离越远,要做到这一点,还有更多的工作要做.
在我看来,字节码优化器不会那么好,因为它丢失了原始源代码中可用的所有语义信息(可能已经被java编译器的优化器宰了.)
那么甚至可以用java编译器来达到C的效率吗?
实际上,字节码JIT编译器在许多情况下可以超过静态编译语言的性能,因为它可以实时和实际执行上下文中评估字节代码.因此,应用程序性能随着它的继续运行而增加.