嘿,我一直试图找到一个答案(在stackoverflow和google上)到C#中的Array.Sort是如此之快的问题.我找不到一个.
无论我使用哪种算法,我都没有设法比它更快地排序大数组.我知道它使用快速排序,但必须非常优化.
有谁知道他们怎么这么快?
Han*_*ant 18
它是标准的快速排序代码,用C#编写.您可以在ArraySortHelper <>.QuickSort中找到它,比如说Reflector.
分析代码时的一个非常标准的错误是在禁用JIT优化器的情况下执行此操作.运行Debug构建或附加调试器时会发生这种情况.当您对Array.Sort()方法进行概要分析时,这不会发生,当您的计算机上安装了.NET时,它会被ngen.exe预先设置.优化程序对生成的机器代码的质量有很大影响.检查此答案以了解它执行的优化类型.
您可以调试发布质量的机器代码,但这需要更改选项.首先切换到Release配置.然后工具+选项,调试,常规,取消勾选"在模块加载时抑制JIT优化".谨防陷阱,你会看到内联,代码提升和消除局部变量的影响.