Sie können eine ziemlich zuverlässige Kopie des CLR-Quellcodes von SSCLI20 source distribution erhalten. Es wurde 2005 veröffentlicht und war zu der Zeit eine ziemlich genaue Kopie von CLR Version 2. Niemals eine offensichtliche Diskrepanz gefunden.
Das ist seit damals, bereits vor 7 Jahren, und seither ein ziemlich großes CLR-Versionsupdate. Aber TrySZSort() gibt es immer noch, diese Low-Level-Implementierungen sind sehr selbsterhaltend. Sie finden es in clr/src/vm/ecall.cpp erklärt und ArrayHelper abgebildet :: TrySZSort(), eine C++ Methode deklariert in clr/src/vm/arrayhelpers.cpp
Es ist sonst sehr langweilig, es ruft nur eine Vorlage Klassenmethode namens ArrayHelpers<T>.QuickSort()
, spezialisiert von Array-Elementtyp für Werttyp Elemente.
Wie Tony Hoare es vor 52 Jahren geschrieben hat. Obwohl nicht in C++;)
Sie finden den Grund, warum dieser Code in C++ geschrieben ist und nicht in C# in this answer.
Diese Methode ist in nativem Code implementiert, daher das Schlüsselwort "extern". Könnte irgendwo in der Referenzquelle enthalten sein, aber wenn Sie nicht nur neugierig darauf sind, wie es implementiert wird, ist es wahrscheinlich schneller als alles, was Sie in verwalteten Code schreiben können. –
http://stackoverflow.com/questions/6842090/c-sharp-fastest-way-to-sort-an-array-in-descending-order – xandercoded
Ich bin neugierig, weil naive QuickSort aufgerufen wird, wenn Standard-Comparer verwendet wird. Also bedeutet das Array.Sort garantiert nicht N * Log (N) schlimmsten Fall, auch wenn TrySZSort aufgerufen wird oder nicht. –