繁体   English   中英

使用O3优化级别编译GSL

[英]Compile GSL with O3 optimization level

我的程序在很大程度上取决于GSL的特殊功能,因此我想使其运行更快,因此我希望以更高的优化级别来编译GSL。

编译gsl时,如果在使用“ ./configure”配置时不执行任何操作,则默认CFLAGS为“ -g -O2”。 我想知道为什么仅因为O3符合标准,gsl才默认设置为O2的优化级别。 我尝试使用“ ./configure CFLAGS ='-g -O3'”进行编译和测试,结果正常。 但是我仍然不确定一切是否正常。

谁能告诉我为什么GSL默认使用O2而不是O3? 如果我默认使用O3会很危险吗? 谢谢!

优化级别3是仅在绝对确定对库有帮助的情况下才应使用。

由于该级别激活了优化,可能会大大增加代码的大小。 这意味着在某些情况下,它创建的二进制文件比用-O2优化的二进制文件还要慢。 这种情况很少发生。 更有可能出现这样的影响,例如编译时间大大增加,二进制文件大小增加并且性能变化几乎无法测量。

-O3实际上破坏了某些东西在-O3是很普遍的,但是在过去的几年中,我没有遇到过-O3实际上优化了导致二进制破坏的东西的情况。

最后,您可以测试优化级别。 由于-O2是默认设置,因此可以肯定地说,在这种情况下,这是编译操作的最佳设置。 如果您愿意,可以尝试使用其他设置进行编译,以查看其性能是否有所不同。

有趣的选项是-O3甚至-Os 过去我曾遇到过两种选择都比-O2改善了性能的情况。

因此,真正的答案是: 试试看,看看会发生什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM