javac优化标志

the*_*tro 31 java compiler-construction optimization javac

我最近在C中编写了很多代码,现在正在转向Java.我目前正在实现一个大型数据结构,并且想知道在调用Java编译器时是否可以打开任何优化标志以提高gcc中的性能.

我习惯了:

gcc -O3 -NDEBUG MyProgram.c
Run Code Online (Sandbox Code Playgroud)

有一个类似的命令javac吗?

我正在使用JDK并且正在运行Ubuntu 10.04.

Pét*_*rök 25

Java中的优化主要由JIT编译器在运行时完成.因此,没有必要尝试指示它在编译时优化某种方式(无论如何它只创建字节码).JIT几乎肯定会在现场做出更好的决策,了解确切的环境并观察代码特定部分的实际执行模式.

有一些特定的编译器选项会影响性能,但这些选项用于调优JVM(包括垃圾收集器)而不是优化代码本身.


Dan*_*olo 17

没有等效-O3或任何-O级别,但您可以访问特定的调整选项-XX:.有可用的完整列表在这里.

这假设您正在使用Oracle提供的JVM,并且它可能因您的环境而异("使用JDK"并不真正描述您正在使用的版本)

  • +1表示调整选项的链接 (3认同)
  • +1感谢您的链接。但是,不幸的是,那些“性能选项”(不是真正的“优化”选项)主要与GC的工作方式有关,或者如果不是,则与内存的分配/使用方式有关,这又与“垃圾”或方式有关。减少它。 (2认同)

loc*_*cka 13

您可以通过Proguard(一种流行的Java混淆器)运行Java字节代码来优化它.它将按顺序缩小,优化和混淆代码,使用交换机控制几乎所有内容.它将删除未使用的方法和变量,内联代码,删除死分支,合并相同的代码并执行许多其他优化.结果是一个jar文件,它与您的输入相同,但占用的空间更少,运行速度更快.

它是商业客户端软件的必备软件.