2012-07-29 21 views

回答

3

沒有好處,因爲結構是按價值傳遞的。逐個傳遞多個參數將從正在運行的程序獲得與分配struct相同數量的分配。此外,由於填充,struct可能會給您帶來更壞的結果。

即使你通過struct的指針,你仍然需要將它傳遞給調用的一個新的水平之前分配您struct的新實例。理論上講,通過重複使用一次在多次調用中分配的結構,您可以獲得一些好處,但在大多數情況下,這是一種微型優化,不值得您麻煩(除非您的分析器另有說明)。

2

甚至遞歸涉及其萎縮的表現更在傳遞參數的遞歸函數使它進一步不規則,創建一個混淆開發人員,用自己的風險會

2

缺點很多堆棧操作:

如果您有__fastcall可用,則遞歸函數可通過通過寄存器傳遞多個參數來提高性能。可用於此目的的通用寄存器數量可能因平臺而異。所有額外的參數都通過堆棧傳遞。

堆棧託管參數在計算函數的最開始被載入寄存器的機會很大。所以,每個通過參數的堆棧都需要至少一次內存訪問。如果你把所有的東西都打包到結構中並傳遞它的指針,那麼每個成員的訪問都會產生至少一次對內存的訪問。這裏沒有真正的好處

通過價值傳遞多個參數,你可以隨心所欲地改變它們。對於結構成員,您可以在計算中使用臨時副本(有效地重複傳遞多個參數),或者編譯器將修改後的值寫回結構實例所在的位置。這會產生不必要的開銷。

優點:

我將包輸出型參數到結構。這隻會減少參數的數量,並且可以設想功能原型,因爲它具有以人爲本質來操作具有功能的實體

相關問題