前幾天看到個node.js和C#比較性能的文章,在那篇文章中C#的性能居然輸了,按理說這是不可能的,除非有什麼特殊的情況拖慢了性能。
檢視其異步的寫法,最終發現沒有什麼問題,起碼不是主要問題。
後來用VS自帶的性能分析器檢視了下,發現絕大多數的性能耗費在排序上面。
注:此圖已經不是最開始分析的那張圖了
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幾倍,當然此時也不在足夠公平的範疇内了。