2013-02-26 27 views
-3

我使用quicksort,heapsort實現introsort .. 我的手編碼版本是基於D. Musser的建議與遞歸深度切換到heapsort作爲參數傳遞,中位數3樞軸選擇。切換到簡單插入排序的元素閾值爲16.爲什麼std :: sort比手工編寫的「introsort」更快?

+3

你使用了什麼編譯器?什麼樣的分析器?什麼測試方法?可能的原因是因爲'std'版本有很多的眼睛,並且花費了大量精力進行優化。但是,這個問題目前是完全無法回答的。 – Yuushi 2013-02-26 06:47:54

+0

@Yuushi - 它更可能是非常少的眼睛,但非常好。 – 2013-02-26 13:40:26

回答

3

gcc和Microsoft的VisualC++都提供std :: sort(在頭文件算法中)的源代碼。所以,你可以自己看看。我曾經調查過類似的問題。我的結論是,代碼針對通用代碼路徑進行了優化,甚至使代碼更復雜且難以維護。對我有意義的權衡。

相關問題