[英]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.