簡體   English   中英

在帶有std = c99的gcc中強制內聯函數

[英]forcing inline functions in gcc with std=c99

我正在編寫一個純C代碼(以提高性能),並且希望gcc至少可以擴展我聲明為“靜態內聯”的所有功能(因為我使用的是std = c99,所以內聯的語義已更改並且是靜態的最好使用inline),其中一些功能包括矩陣操作,堆向上/向下篩選等。通常情況下,發生的操作非常小,通常會發生很多次。 有沒有一種方法可以通過指定GCC的任何選項來實現? 我已經啟用了-o3,在某個地方我碰巧說過-o3和“靜態內聯”函數聲明,所有函數調用都將被擴展。 真的嗎? 我該如何驗證? 謝謝!

您可以嘗試__attribute__((always_inline)) ,但通常來說,正常的inline就足夠了,除非您使用-Os 如果未內聯函數,則gcc可能有充分的理由不這樣做。

更好的方法是使用性能分析和鏈接時間優化(LTO)。 通常,手動優化代碼應該是最后的解決方法。

當然,您可以驗證函數是否已內聯:只需查看生成的代碼即可。

暫無
暫無

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

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