当前位置: 首页 > 面试题库 >

我应该使用javac -O选项进行优化吗?

宗政松
2023-03-14
问题内容

javac
有一个有趣的-O选择:

通过内联静态,最终和私有方法来优化编译代码。请注意,您的班级可能会变大。

该选项似乎并不流行(隐藏?),我今天才在CodeCup
2014页面
上发现了它。

-O在官方文档中也没有提及man javac

在接受类似问题的答案中,我们可以看到:

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

我的问题是:

是否应该始终使用该-O选项?换句话说,代码总是运行得更快,-O或者根本没有区别吗?

也许班级人数会增加太多,以致整体表现会下降?还是JVM仍会进行内联,所以最好还是保留它?

国旗也有类似的故事gcc -O3


问题答案:

根据源代码中关于553行的注释,此操作为空。

当JIT编译器效率不高或根本没有JIT编译器时,这可能很有用。



 类似资料:
  • 有一个有趣的选项: 通过内联静态、最终和私有方法优化编译代码。请注意,您的类可能会变得更大。 这个选项似乎不流行(隐藏?),我今天刚刚在CodeGlass 2014页面上发现了它。 在官方文档中没有提到,也没有在...奇怪。 在类似问题的公认答案中,我们可以看到: Java 中的优化主要由 JIT 编译器在运行时完成。因此,尝试指示它在编译时以某种方式进行优化是没有意义的(无论如何,当它只创建字节

  • 这是用构建的好例子吗?有理由不这样做吗?我从未真正见过一个程序,无论它花多少时间在I/O上,都是为了大小而编译的。

  • 关于编译器(GCC)所做的优化,标准做法是什么?每个选项(-O、-O1、-O2、-O3、-Os、-s、-fexpensive-optimizations)有什么不同,我如何决定什么是最优的?

  • 我正在使用JMH,一个OpenJDK微基准测试工具。构建过程创建<代码>微基准。我用调用并传递jar名称和JMH参数的jar。 我想知道我们应该使用选项运行基准测试吗?为什么? 换句话说,我是否应该使用以下命令运行基准测试:

  • 有几种使用SIMD指令优化HOG描述符计算的尝试:OpenCV、Dlib和SIMD。它们都使用标量代码将结果幅值添加到HOG直方图中: 在那里,大小的值取决于实现,但一般意义相同。 我知道使用SIMD计算直方图的问题并没有简单有效的解决方案。但在这种情况下,我们有小尺寸(18)的直方图。它能帮助SIMD优化吗?

  • 问题内容: 我最近一直在用C编写很多代码,现在正在切换到Java。我当前正在实现一个大型数据结构,并且想知道在调用Java编译器时是否可以打开任何优化标志,以提高gcc之类的性能。 我习惯于: 有类似的命令javac吗? 我正在使用JDK并正在运行Ubuntu 10.04。 问题答案: Java中的优化主要由JIT编译器在运行时完成。因此,没有必要试图指示它在编译时优化某种方式(无论如何它仅创建字