javac
有一个有趣的-O
选择:
通过内联静态,最终和私有方法来优化编译代码.请注意,您的课程可能会变得更大.
这个选项似乎不受欢迎(隐藏?),我今天刚刚在CodeCup 2014页面上发现它.
-O
中未提及的官方文件,也不在man javac
......奇怪.
在对类似问题的接受答案中,我们可以读到:
Java中的优化主要由JIT编译器在运行时完成.因此,没有必要尝试指示它在编译时优化某种方式(无论如何它只创建字节码).JIT几乎肯定会在现场做出更好的决策,了解确切的环境并观察代码特定部分的实际执行模式.
我的问题是:
我应该总是使用该-O
选项吗?换句话说,代码总是运行得更快-O
或根本没有差别?
也许班级规模会增加太多,整体表现会下降?或者JVM无论如何都会进行内联,所以最好留下它?
类似的故事是与gcc -O3
国旗.
根据第553行的源代码中的注释,这是一个无操作.
当JIT编译器效率不高或根本没有JIT编译器时,它可能很有用.
我从一开始就一直在使用Java.我已经构建了许多系统,其中一些是高性能的,其中一些是极端的性能,而且我从来没有发现过这个标志有用.我认为它可能曾经有过使用,但我从来不需要关心.
我认为它不会像你想的那样进行任何优化:
-O通过内联静态,最终和私有方法来优化编译代码.请注意,您的班级可能会受到更大的注射.
请查看以下问题:
Java编译器优化
Java代码编译器优化
更新
您不会在任何Oracle文档中找到它,因为它实际上什么都不做(no-op).此外,您的链接是一个非常古老的文档:
在你的链接中找到两个目录- 这是jdk 1.1.3的文档.这是13 - 14岁!我们现在正在Jdk 7上,并急切地等待Jdk 8.