我正在測試一些排序算法,並測量它們的執行時間,發現一些很奇怪的東西,並提出了這個問題,是> =快於>?當> =用於元素比較時,插入排序比>更慢,爲什麼?
-1
A
回答
2
CPU體系結構特定。無論如何,你如何在現代處理器上測量它?
但是,如果密鑰不是一個真正的int(即你將它匿名爲1),並且沒有特定的重載操作符< =比< =的代碼性能會比<差很多。
在您的特定算法中,在< =和<之間切換會破壞您的算法,這就是發生在這裏的情況。
1
不,在任何現代硬件上,>和> =之間沒有性能差異,任何時間變化都是虛假的,純粹是巧合。你確定代碼片段實際上是做同樣的事嗎?您的編譯器設置是否設置爲最大化優化(在調試模式下對代碼進行計時無用)?
順便說一句,你可能不應該在C++中用「T」開始你的類型名稱。這不是Pascal ^^
相關問題
- 1. 爲什麼插入排序比合並排序更快?
- 2. 爲什麼我的mergesort實現比冒泡排序和插入排序慢?
- 3. 使用插入計數比較排序
- 4. Java.util.Date比較 「> =」
- 5. 爲什麼我的插入排序比mergesort更快?
- 6. 爲什麼插入一組<vector <string>>這麼慢?
- 7. 爲什麼用表達式<TDelegate> .Compile()比純C#慢?
- 8. 爲什麼在實踐中插入排序比Bubble Sort和堆排序更快?
- 9. Java - 爲什麼我的Bubble排序比我的插入排序更快?
- 10. 爲什麼是List <>。OrderBy LINQ比IComparable + List <>更快。
- 11. 爲什麼Date1.CompareTo(Date2)> 0比Date1> Date2更快?
- 12. 比較元素
- 13. 列表<T>排序使用比較器<T>而不是IEquatable,爲什麼?
- 14. 什麼庫用於時間比較
- 15. VBO比繪製圖元的過時方法更慢 - 爲什麼?
- 16. 爲什麼簡單列表<T>似乎比ArrayList慢?
- 17. 使用比較函數插入時排序
- 18. 「不在」比<>慢嗎?
- 19. 爲什麼使用<script>元素作爲模板比其他元素更受歡迎?
- 20. 爲什麼列表<T>。排序方法重新排序等於IComparable <T>元素?
- 21. 爲什麼MySQL導入比導出慢?
- 22. 在插入時比較值
- 23. 爲什麼python gevent比串行更慢?
- 24. 爲什麼是Python的 「排序()」 比慢 「副本,那麼的.sort()」
- 25. 爲什麼寫入MemoryStream比文件慢?
- 26. 爲什麼'>'與SQL中的VARCHAR數據有效比較?
- 27. 爲什麼我的ArrayList不能用比較器進行排序?
- 28. Linq to SQL - 左加入>比較
- 29. 爲什麼`speedglm`比`glm`慢?
- 30. 爲什麼minus比mod慢?
介意你改變了排序算法本身。如果你想檢查這兩個對方,正確的while語句是:while(j> -1 && aux.key < pA-> Positions [j] .key) – Vogel612 2013-02-18 16:15:45
您正在比較不同的算法。 – 2013-02-18 16:17:35
這實際上是一個有趣的問題,但你給它一個標題,使它看起來像一個無趣的問題。在編譯代碼中,如果沒有重載運算符,'> ='和'>'應該在測量噪聲中使用相同的時間(它實際上是從'BGT'到'BGE'機器指令的變化)。但是,您的更改會使排序算法的行爲有所不同,* *很容易在運行時間上產生很大差異 – zwol 2013-02-18 16:17:57