運算速度
回答
這種微型優化只是浪費你的時間以獲得最小收益。
使用一個分析器,並開始通過改進自己的算法和代碼,無論探查器告訴你遊戲花費大部分時間。
請注意,在某些情況下,爲了實現更高效的設計,您可能必須檢修整個軟件或其中的大部分軟件。在這種情況下,剖析器的結果可能會誤導缺乏經驗的人。例如。與一勞永逸地緩存其結果相比,優化複雜計算可能獲得最小的收益。請參閱this somewhat related thread。
最好的辦法是使用像AQTime這樣的工具並進行性能分析。然後你會知道在哪裏花時間優化。但是過早地做或者基於猜測工作可能不會讓你感覺太多,並且使代碼複雜化或者破壞某些東西。如果可以的話,最好的辦法是進行任何浮點計算,特別是sin,cos等,以及sqrt。
我曾經有過這樣的事情:
for i = 0 to nc
for j = 0 to nc
aij = sqrt(a[i]*b[j])
,其計算NC數控*平方根。但是由於sqrt(a * b)等於sqrt(a)* sqrt(b),所以您可以事先預先計算所有a和b的平方根,以便循環變成如下所示。所以不是nc * nc平方根,而是2 * nc平方根。
for i = 0 to nc
for j = 0 to nc
aij = asqrt[i]*bsqrt[j]
您問的問題高度依賴於您在硬件級開發的平臺。不僅在不同的芯片組之間會有差異(英特爾/ AMD),而且平臺上也會有不同的變化(我懷疑iPhone沒有儘可能多的指令去做某些事情)。
您在您的問題中聲明您正在討論「呈現代碼」。如果您正在討論實際在GPU(着色器代碼)上運行的代碼而不是CPU,則規則會發生大規模變化。
由於@thkala說,我真的不會在你開始之前擔心這一點。我發現它不僅更容易,而且可以更快地以首先使用的方式進行編碼,然後(只有在需要改進時)重新編寫代碼分析時緩慢的位。更好的算法通常會提供比嘗試僅使用特定功能更好的性能。
在我們正在爲iPhone開發的遊戲中,我唯一想到的就是大數學運算(sqrt)很慢(不是基本的數學運算),而且運行的循環每一幀都會很快吃光CPU。牢記這一點,我們不需要優化任何代碼 - 因爲它無論如何都以60fps運行 - 所以我很高興我一開始並不擔心它。
確定特定操作的速度通常稱爲分析。對操作進行分析的最佳解決方案是使用分析器。 Visual Studio有一個很好的分析器。 Linux有gprof。如果你的編譯器沒有分析器,那麼購買一個編譯器可能是值得的,如果你經常分析你的代碼的話。
如果不使用專業的探查度日,那麼你通常可以通過嵌入自己到你的程序
check this out一些分析器的代碼獲得。
- 1. 浮點運算速度
- 2. Python「in」運算符速度
- 3. 函數的運算速度
- 4. AVX標量運算速度更快
- 5. 從速度計算加速度峯值
- 6. 速度計算算法
- 7. 在Linux和Windows上的算術運算執行速度
- 8. OpenGL平滑相機運動,運算速度比渲染慢
- 9. 從UIA加速計計算速度
- 10. 指數計算速度
- 11. 計算角加速度c#
- 12. 黑莓加速度計算
- 13. 基本速度算法?
- 14. parfor減慢計算速度
- 15. 計算出速度datastudio
- 16. 計算速度字符串
- 17. 計算上傳速度
- 18. 計算徑向速度
- 19. .includes()算法和速度?
- 20. 計算CAN總線速度
- 21. 從2點計算速度
- 22. 衝刺速度計算
- 23. CUDA快速數學運算
- 24. Android加速度計角度計算
- 25. 使用`**`作爲運算符運算符快速運行,運算符'-`
- 26. 加速度運動極限
- 27. JMeter運行速度很慢
- 28. TortoiseSVN運行速度很慢
- 29. AS3:車輛運動速度
- 30. CURAND運行速度較慢
找到處理器參考並查看延遲/吞吐量:例如http://download.intel.com/design/processor/manuals/248966.pdf – Anycorn 2011-02-01 19:03:19