Es un código estándar de quicksort, escrito en C#. Puede encontrarlo en ArraySortHelper <> .QuickSort con, por ejemplo, Reflector.
Un error estándar bastante cuando el código de perfiles es hacerlo con el optimizador JIT deshabilitado. Lo cual sucederá cuando ejecute la compilación Debug o tenga un depurador adjunto. Esto no sucederá cuando usted perfile el método Array.Sort(), fue pre-jitted por ngen.exe cuando se instaló .NET en su máquina. El optimizador tiene un gran efecto en la calidad del código máquina generado. Compruebe this answer para el tipo de optimizaciones que realiza.
Puede depurar código de máquina de calidad de liberación, pero eso requiere cambiar una opción. Primero cambie a la configuración Release. Luego Herramientas + Opciones, Depuración, General, desmarque "Suprimir optimización de JIT en la carga del módulo". Tenga cuidado con las trampas, verá los efectos de la creación de líneas, el levantamiento de códigos y la eliminación de variables locales.
Gracias, intentaré eso. –
Hm, extraño. Cada vez que algo es rápido en el CLR, la gente asume el código nativo ... –
@Paul entonces mi suposición es incorrecta aquí? –