当我对一个程序进行抽样时它是如何实现的,它实际上比不进行分析更快?

我使用DotTrace 4.5性能

发布模式下的时间:

2400000000 Basic: 00:00:08.8051103 2400000000 Five: 00:00:09.1561338 2400000000 Overload: 00:00:16.3740938 2400000000 IListtoFive: 00:00:15.5841445 

在发布模式下进行性能分析的时间。

  2400000000 Basic: 00:00:01.0048224 2400000000 Five: 00:00:03.5416982 2400000000 Overload: 00:00:11.8009959 2400000000 IListtoFive: 00:00:11.2568770 

我的代码:

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace testLineIndex { class Program { static long Five(int s0, int s1, int s2, int s3, int s4) { return s4 + 100 * s3 + 10000 * s2 + 1000000 * s1 + 100000000 * s0; } static long Overload(IList line) { return Five(line[0], line[1], line[2], line[3], line[4]); } static long IListtoFive(IList line) { return line[0]+100* line[1]+10000* line[2]+1000000* line[3]+100000000*line[4]; } static void Main(string[] args) { Stopwatch watch = new Stopwatch(); long testSize = 400000000; //List myList = new List { 1, 2, 3, 4, 5 }; int[] myList = new int[] { 1, 2, 3, 4, 5 }; long checksum = 0; watch.Start(); for (long i = 0; i < testSize; i++) { long ret = Five(1,2,3,4,5); checksum += ret % 9; } watch.Stop(); Console.WriteLine(checksum); Console.WriteLine("Basic: {0}", watch.Elapsed); checksum = 0; watch.Restart(); for (long i = 0; i < testSize; i++) { long ret = Five(myList[0], myList[1], myList[2], myList[3], myList[4]); checksum += ret % 9; } watch.Stop(); Console.WriteLine(checksum); Console.WriteLine("Five: {0}",watch.Elapsed); checksum = 0; watch.Restart(); for (long i = 0; i < testSize; i++) { long ret = Overload(myList); checksum += ret % 9; } watch.Stop(); Console.WriteLine(checksum); Console.WriteLine("Overload: {0}", watch.Elapsed); checksum = 0; watch.Restart(); for (long i = 0; i < testSize; i++) { long ret = IListtoFive(myList); checksum += ret % 9; } watch.Stop(); Console.WriteLine(checksum); Console.WriteLine("IListtoFive: {0}", watch.Elapsed); Console.ReadKey(); } } } 

我怀疑是调试器。 即使您在发布模式下运行它,从VS运行它也会附加调试器,这会大大减慢它的速度。