Xtr*_*oce 1 java compiler-construction performance runtime
我想知道,当编译为java 1.4编写的java源代码时,-source和-target开关设置为1.4时,是否会使用版本中内置的一些/任何优化.我的第一个目的当然不是说,因为在编译之后你会获得一组指令,这些指令的目标是最初的1.4 VM.然后我认为,由于编译器只是更巧妙地使用指令,因此仍然应该有一些改进.
或者换句话说,大多数优化都位于运行代码或编译类的VM中?
请保存评论1.4毫无希望地过时,问题只是我现在想了两天的事情,搜索互联网并没有为我提供任何合理的答案.
javac编译器优化代码是一种常见的误解.它不是在99%的情况下,并且主要产生你所写的字节代码的字面翻译.
所有优化都在运行时在JIT中.这意味着为JDK 1.0编译的代码将在最新的处理器上运行,与使用Java 7或8的最新更新的相同代码相同.
注意:编译器在计算编译时已知的常量时会进行少量优化.例如1+1=> 2和"hello " + "world"=>"你好世界".这些优化多年来没有太大变化,它们可能在Java 1.2中出现过,可能更早.
编译时会得到一组指令,这些指令的目标是原始的1.4 VM
Java 7中只添加了一个字节代码指令,因为Java 1.0和Java不使用它.添加它是为了支持在JVM上运行的动态语言.
做最多的优化是在运行代码或编译类的VM中
你可以假设它.Java 1.0 - 1.4将使用StringBuffer进行字符串连接,而Java 5.0+将使用稍微优化的StringBuilder.差异很小(但可衡量)
请保存评论,1.4无可救药地过时,
Java 6已经过时了,Java 8将使Java 7看起来过时(当它最终在今年的某个时候出现)