簡體   English   中英

C# 中的 Array.Sort 怎么這么快?

[英]How is Array.Sort in C# so super-fast?

嘿,我一直在試圖找到一個答案(在 stackoverflow 和 google 上),以解決 C# 中的 Array.Sort 如何如此之快的問題。 我沒有找到一個。

無論我使用哪種算法,我都無法比它更快地對大 arrays 進行排序。 我知道它使用快速排序,但它必須非常優化。

有人知道他們是怎么做到這么快的嗎?

它是標准的快速排序代碼,用 C# 編寫。 你可以在 ArraySortHelper<>.QuickSort 中找到它,比如 Reflector。

分析代碼時的一個非常標准的錯誤是在禁用 JIT 優化器的情況下這樣做。 當您運行調試版本或附加調試器時會發生這種情況。 當您分析 Array.Sort() 方法時不會發生這種情況,當 .NET 安裝在您的機器上時,它是由 ngen.exe 預先設置的。 優化器對生成的機器代碼的質量有很大的影響。 檢查此答案以了解它執行的優化類型。

您可以調試發布質量的機器代碼,但這需要更改選項。 首先切換到發布配置。 然后工具+選項,調試,常規,取消勾選“在模塊加載時抑制JIT優化”。 當心陷阱,您將看到內聯、代碼提升和局部變量消除的效果。

您可以使用ILSpy反匯編代碼。 我希望內部排序代碼中的本機方法可以加快速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM