The C++ Standard Library (Second Edition)Nicolai Josuttis 在他的書中指出,與普通函數相比,編譯器可以更好地優化lambda。另外,C ++編譯器比常規函數更好地優化了lambda。(第213頁)這是為什么?我認為在進行內聯時應該不再有任何區別。我能想到的唯一原因是,編譯器可能具有更好的lambda本地上下文,這樣可以做出更多的假設并執行更多的優化。
2 回答

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
因為當您將“函數”傳遞給算法時,實際上是在傳遞函數的指針,因此它必須通過指向函數的指針進行間接調用。使用lambda時,會將對象傳遞到專門針對該類型實例化的模板實例,并且對lambda函數的調用是直接調用,而不是通過函數指針的調用,因此很有可能是內聯的。
- 2 回答
- 0 關注
- 503 瀏覽
添加回答
舉報
0/150
提交
取消