在C 執行語句順序
問題:
如何防止重新排序C 程式碼中的語句,即使經過最佳化啟用?
答案:
儘管有常見的假設,C 本身並不會強制語句排序,尤其是在最佳化情況下。某些語句在最佳化程式碼中可能會出現亂序,這對於時間敏感操作等場景可能會出現問題。
解決方案:
從根本上來說,操縱操作像加法這樣的基本操作的語義來實現嚴格排序是不可行的。編譯器和硬體設計最佳化的前提是這些操作不具有可觀察的時序屬性。
但是,已經出現了用於微基準測試的有效技術:
不透明資料操作:
庫支援:
編譯器指令:
注意:
C標準委員會正在探索 DoNotOptimize 等 API 的標準化,以進一步促進語句順序的執行。
以上是如何防止優化 C 程式碼中的語句重新排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!