我有一個繪製方法,將被重複調用(每幀...)。在這個方法裏面我有一些本地定義的變量(大約20)。我正在考慮把它們放在一個結構中,並將一個指向該結構的指針作爲參數傳遞給方法。這是希望間接操作比將變量放在堆棧上更快。指針間接與堆棧上的分配成本是多少?
是存在的,一般來說,在這裏一個合理的性能差異?
我有一個繪製方法,將被重複調用(每幀...)。在這個方法裏面我有一些本地定義的變量(大約20)。我正在考慮把它們放在一個結構中,並將一個指向該結構的指針作爲參數傳遞給方法。這是希望間接操作比將變量放在堆棧上更快。指針間接與堆棧上的分配成本是多少?
是存在的,一般來說,在這裏一個合理的性能差異?
在堆棧上放置的變量(在x86處理器,至少)是非常快的。在x86處理器上,使用堆棧的功能是在函數開始時減去一次,並在結尾處添加一次;增加更多變量只是改變了數字,並不會讓它變慢。如果你使用的是間接尋址,那可能是更多的操作,所以它可能會慢一些,但是如果你的編譯器把這個結構指針放在一個寄存器中,它可能會快速加載和存儲。
我會堅持使用任何使你的代碼更簡單,因爲它是一個微型的優化,無論如何,你應該只考慮你已經成型後確定這是一個瓶頸。
是的 - 唯一一次我會這樣做,如果結構預計將保持呼叫一些狀態。 –
你嘗試了嗎? –
現在把它拼在一起,雖然這是一個漫長的過程,所以我想我會去教育自己。 ;) –