回答
在某些使用2次冪除數的情況下,使用自行研究的計算餘數的方法可以做得更好,但通常半途體面的編譯器會盡可能使用可變除數,或者「奇怪」的因子不適合任何模式。
請注意,一些CPU甚至沒有乘法操作,所以(在那些上)乘法對於加法來說相當慢(對於32位乘法至少是64x)。 (但是,如果乘數是文字,智能編譯器可能會對此進行改進。)稍大一些的數字沒有分隔操作,或者有很慢的分隔操作。 (在一個具有快速乘法器的CPU上,乘法的速度可能只比加法速度快4倍,但在「普通」硬件上,它的速度比32位速度低16-32倍,除此之外,速度比乘法慢2-4倍,但可以在某些硬件上要慢得多。)
其餘的操作是在硬件很少實施,並且可能需要正常A % B
地圖,沿着A - ((A/B) * B)
(一些額外的作業線的東西,以確保正確的符號,等)。
(我瞭解這個東西,而微程序爲SUMC computer for RCA/NASA早在70年代初的指令集。)
不,編譯器將以最有效的方式實現%。
在速度方面,+和 - 是最快的(同樣快,通常由同一個硬件完成)。
*,/和%慢得多。乘法基本上是通過你在小學時學到的方法完成的 - 將第一個數字乘以第二個數字中的每個數字並加上結果。通過二進制使一些黑客成爲可能。從幾年前開始,乘數比加法慢3倍。司應該類似於繁殖。剩餘部分與部門相似(實際上它通常是同時計算)。
確切的差異取決於CPU類型和精確模型。您需要查找特定機器的CPU規格表中的延遲。
是否有任何來源,我可以從獲得更多的信息?也許我錯過了一些問題。 –
最好的學習方法 - 學習裝配和數字電路設計。作爲獎勵,您將瞭解您的計算機是如何工作的,以及如何完成工作。 –
- 1. 長時間執行操作
- 2. VBA行操作執行時間太長
- 3. 執行操作在時間的DatePicker
- 4. MapReduce作業所花費的時間
- 5. Python 3.x - 執行操作所需的輸出時間爲DD:HH:MM:SS.SSS
- 6. Grails - 如何計算花費在任何操作上的執行時間?
- 7. 減少執行mysql查詢所花的時間
- 8. 如何管理sp-sql-server所花費的長執行時間
- 9. Interbase SQL花費很長時間執行
- 10. 查詢花太長時間執行
- 11. EF花費時間執行SP
- 12. 查詢花費很長時間執行
- 13. 執行存儲過程花費的時間比執行TSQL
- 14. 在SQL執行DELETE語句花費太長的時間執行
- 15. 總共花費的時間和所有線程所花費的平均時間
- 16. 啓動時執行操作
- 17. 及時執行操作
- 18. 長時間運行文件操作和執行超時
- 19. 在線性時間運行的Haskell中執行反向操作
- 20. 執行repreat bash命令時的睡眠持續時間操作
- 21. 火花執行器GC花了很長時間
- 22. 任務並行庫執行長時間運行操作
- 23. 執行操作
- 24. 執行操作
- 25. 執行操作
- 26. 定義執行某些操作所需的時間(延遲,吞吐量,帶寬)
- 27. 如何測量Spark在分區RDD上執行操作所需的時間?
- 28. Timer Elapsed Event不執行所有操作
- 29. Cocos2d CCActionManager繼續執行所有操作
- 30. 如何檢查執行時間花了多長時間
其餘部分(對於'%')經常作爲除法操作的一部分輸出。 x86和MIPS實現了這一點,它涵蓋了現代處理器的一個相當大的子集。 – nneonneo
@nneonneo - 啊,是的,我忘記了。雖然有幾個處理器不能從其餘部分中分離出來(作爲一個單獨的結果),並且通常這樣獲得的其餘部分不符合語言的定義。順便說一句,有時令人沮喪的是,沒有一種通用的語言提供* divide-with-remainder *操作,因爲當你需要餘數時,你經常需要商。 (儘管我認爲有些編譯器可以在正確的環境下一起優化這兩個操作。) –
Python很常見,並且它具有'divmod'來達到這個目的:) – nneonneo