簡體   English   中英

/ Ox和/ O2編譯器選項有什么區別?

[英]What is the difference between the /Ox and /O2 compiler options?

Microsoft的C ++編譯器( cl.exe ,包含在Visual Studio中)提供了幾個優化開關 大多數它們之間的區別似乎是不言自明的,但我不清楚/O2 (優化代碼的最大速度)和/Ox (選擇“完全優化”)之間的差異。

我已經嘗試閱讀/Ox選項的文檔 ,它似乎確認此開關還可以優化最大速度,而不是大小:

/Ox編譯器選項生成的代碼有利於執行速度小於較小的大小。

但特別是,“備注”部分下面的聲明引起了我的注意:

通常,指定/O2 (最大化速度)而不是/Ox

所以我的問題是, 為什么人們普遍贊成/O2 over /Ox 后一個選項是否允許已知的特定優化導致無法預料的錯誤或其他意外行為? 是否只是獲得的優化量不值得額外的編譯時間? 或者這只是一個完全沒有意義的“推薦”,因為/O2是VS中的默認選項?

我在這里找到

Ox和O2幾乎相同。 它們的區別僅在於O2也會拋出GFGy 幾乎沒有理由避免拋出這兩個開關。

Asha的回答引用了一篇關於Visual Studio 2005的博客文章,並且過時了。

最新版本的文檔可在此處獲得:

根據那些:

您可能還對/GS-感興趣,它會關閉堆棧周圍的安全檢查,這可能會帶來很大的性能損失(請參閱/ GSMS文檔 )。

您應該像往常一樣對特定應用程序進

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM