我正在測試一些排序算法,並測量它們的執行時間,發現一些很奇怪的東西,並提出了這個問題,是> =快於>?當> =用於元素比較時,插入排序比>更慢,爲什麼?
-1
A
回答
2
CPU體系結構特定。無論如何,你如何在現代處理器上測量它?
但是,如果密鑰不是一個真正的int(即你將它匿名爲1),並且沒有特定的重載操作符< =比< =的代碼性能會比<差很多。
在您的特定算法中,在< =和<之間切換會破壞您的算法,這就是發生在這裏的情況。
1
不,在任何現代硬件上,>和> =之間沒有性能差異,任何時間變化都是虛假的,純粹是巧合。你確定代碼片段實際上是做同樣的事嗎?您的編譯器設置是否設置爲最大化優化(在調試模式下對代碼進行計時無用)?
順便說一句,你可能不應該在C++中用「T」開始你的類型名稱。這不是Pascal ^^
相關問題
- 1. 爲什麼我的選擇排序比插入排序更快?
- 2. 爲什麼插入排序比合並排序更快?
- 3. std ::排序比較元素爲空
- 4. 爲什麼我的mergesort實現比冒泡排序和插入排序慢?
- 5. 爲什麼我的合併排序代碼比插入排序慢
- 6. 使用插入計數比較排序
- 7. Java.util.Date比較 「> =」
- 8. 爲什麼插入一組<vector <string>>這麼慢?
- 9. 爲什麼我的插入排序比mergesort更快?
- 10. 當考慮堆比較時,你認爲什麼是比較?
- 11. 排序,而不比較元素
- 12. 爲什麼當輸入尺寸很小時,插入排序比快速排序更快?
- 13. 爲什麼我的頁面比<html>元素高?
- 14. 爲什麼用表達式<TDelegate> .Compile()比純C#慢?
- 15. 爲什麼在實踐中插入排序比Bubble Sort和堆排序更快?
- 16. Java - 爲什麼我的Bubble排序比我的插入排序更快?
- 17. 爲什麼是List <>。OrderBy LINQ比IComparable + List <>更快。
- 18. 爲什麼Date1.CompareTo(Date2)> 0比Date1> Date2更快?
- 19. 通用插入排序使用比較對象作爲參數?
- 20. 列表<T>排序使用比較器<T>而不是IEquatable,爲什麼?
- 21. 比較元素
- 22. 比較元素
- 23. 什麼庫用於時間比較
- 24. VBO比繪製圖元的過時方法更慢 - 爲什麼?
- 25. 什麼是hadoop排序比較類?
- 26. 爲什麼DSU裝飾排序undecorate比提供比較功能更快?
- 27. 爲什麼<br>元素具有比行高更高的高度
- 28. 爲什麼簡單列表<T>似乎比ArrayList慢?
- 29. 使用比較函數插入時排序
- 30. 「不在」比<>慢嗎?
介意你改變了排序算法本身。如果你想檢查這兩個對方,正確的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