回答
有一個基本的MIPS指令列表here。您提到的大多數「基本操作」都是單個MIPS指令或者兩個,這在大多數當前CPU系列中可能都適用。
但是,這並沒有考慮到在所有任何現代CPU的架構和性能特點。不同的指令通常有不同的完成時間。目前的CPU通常實現分支預測,指令流水線,內存緩存,並行化和其他技術的完整列表,以使代碼執行更快。
因此,只要有一個算法的彙編代碼實現沒有說明它的執行速度。您必須在實際硬件上測量並剖析代碼以獲得可比較的結果。事實上,即使在相同的CPU系列中,某些算法在某些CPU上的效率也會更高。
一個常見而頗爲理解的例子是指令緩存的效果。展開一個循環將消除許多分支操作,這直觀地使代碼更快。但是,如果您在具有非常小的指令緩存內存的同一系列的CPU上運行該代碼,添加到主內存的訪問可能會使其比簡單的基於分支的循環慢得多。
電腦很複雜。如果你想要達到這個水平,你需要開始考慮你正在使用什麼類型的CPU,你的編譯器可以如何使用這個CPU的指令集,什麼變量保存在什麼寄存器中,它們的比特級表示是什麼,即使如此,指令的數量並不總是很容易映射到實際的運行時間。不同的指令可能需要不同的時鐘週期執行,這甚至不考慮操作系統線程和程序的緩存缺失率。
最後,還有我們在第一時間:)
使用大O notatoin BTW一個很好的理由,最簡單的操作(加,減)的整數應映射到一臺機器指導,以防你擔心。
這取決於CPU架構。一些處理器需要幾個週期來執行單個指令,例如divivide,而其他處理器則需要每個單週期執行所有機器代碼指令。
有時需要測量一個算法需要多少個浮點運算。但是,這不會考慮I/O(如讀取內存)。
CPU的速度有時在FLOPS(浮點運算每秒)中提供,這有助於給您一個時間估計。同樣,不考慮I/O - 而不是多線程問題(也是非常重要的測量因素)。
Donald Knuth在寫作「計算機程序設計藝術」第1卷中解決了這個問題。 在序言中,他給出了在彙編代碼中呈現算法的虛機一個漫長的理由 -
......爲了避免這種困境,我已經 試圖設計一個「理想」 計算機被稱爲「MIX,的算法將循環‘取「與操作非常簡單 規則...
這樣一來,就可以有多少理智地談’,而不必在意之間的機器,高速緩存,延遲差異,管道,或任何其他方式計算技術人員已經進行了優化以節省時間,但知道需要多長時間。
- 1. 運行時間的算法
- 2. 測量計算幾何算法的運行時間
- 3. RadixSort算法運行時間
- 4. 計算一個cron的運行時間
- 5. 計算算法運行時?
- 6. Euclid的GCD算法的運行時間?
- 7. O(n)的運行時間算法
- 8. 以下算法的運行時間?
- 9. 運行的算法時間,以秒
- 10. 算法的漸近運行時間
- 11. 該算法的運行時間
- 12. 算法來估算時間的另一個算法
- 13. 異或算法在算法中的一些實際應用
- 14. Sharepoint計算列何時實際計算?
- 15. Prims算法總計運行時間!
- 16. 重構計算排序算法的運行時間 - python
- 17. 如何計算算法的運行時間?
- 18. 估算程序運行時間的算法
- 19. 如何計算A星算法的運行時間
- 20. 計算下一運行時間任務
- 21. 計算「按時履約」計劃時間和實際時間
- 22. Math.random()運行的時間與簡單算術運算的時間相比如何?
- 23. 確定具有兩個參數的算法的運行時間
- 24. 什麼是這個算法的運行時間
- 25. 確定算法的運行時間以比較兩個陣列
- 26. 運行時間我的算法的複雜性 - 我如何計算並進一步優化算法?
- 27. 計算算法時間
- 28. R中的時間戳算術運算
- 29. 如何測量算法的時間
- 30. Javascript運行時間計算機時區
謝謝你的回覆。我只想*感受我的立方複雜度算法。 '1操作= 1指令'聽起來大致正常。現在我採用'1操作= 7條指令',這是一個保守的估計。另外,我指的是:[http://en.wikipedia.org/wiki/Instructions_per_second](http://en.wikipedia.org/wiki/Instructions_per_second)和[http://www.mrc.uidaho.edu/ MRC /人/ JFF /數字/ MIPSir.html(http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html)。 – 2011-04-02 22:41:30