簡體   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