天天看點

C#字元串排序效率

前幾天看到個node.js和C#比較性能的文章,在那篇文章中C#的性能居然輸了,按理說這是不可能的,除非有什麼特殊的情況拖慢了性能。

檢視其異步的寫法,最終發現沒有什麼問題,起碼不是主要問題。

後來用VS自帶的性能分析器檢視了下,發現絕大多數的性能耗費在排序上面。

注:此圖已經不是最開始分析的那張圖了

C#字元串排序效率

string的預設實作是用StringComparison.CurrentCulture進行比較的,是以自行改為StringComparison.Ordinal後速度大約快了兩倍,瞬間超越了nodejs,

在需要ICompare接口的參數時,可以用StringComparer.Ordinal快速建立,這裡的CompareString也推薦用自帶的StringComparer.Ordinal.Compare代替

在此之前還搜尋了一下:

http://www.codeproject.com/Articles/415767/Fast-List-String-Sort-in-Csharp

這個連接配接中附帶的 Sedgewick.Sort還能再快一些,最終幾乎快nodejs幾倍,當然此時也不在足夠公平的範疇内了。

繼續閱讀