既然現代機器都是多核的,並且我們支持帶有SSE指令的Windows和Linux機器上的SIMD指令,例如,我應該切換到在我的C/C++代碼中合併排序並忘記QuickSort?理論上,這樣做的原因是合併排序會更好地並行化,並更加節省地使用內存/磁盤,因此比QuickSort的內存密集型操作更快,但我不知道。實踐經驗表明什麼?現代機器上的合併排序優於QuickSort?
我不想在每次排序時進行配置文件和測試。我想要使用一種標準方法。目前該方法是QuickSort,因爲這是默認的庫排序例程。我想知道是否有其他人切換到MergeSort並通過進行切換獲得更好的結果。
UPDATE ------------
Graham.Reeds回答How big is the performance gap between std::sort and std::stable_sort in practice?表明,上述傳言我的猜測是正確的,並切換到歸併/ stablesort可能是正確的。
,當然,這裏還有內省排序:http://en.wikipedia.org/wiki/Introsort – NPE
很難當談到性能一概而論。測量並觀察。 –
事情的真相與過去一樣。一切都取決於您的應用程序的數據和特定需求。這並沒有改變。 –