在Visual Studio Express中计算方法执行时间(没有可用的分析器)?

时间:2010-11-30 07:51:23

标签: c# visual-studio

我使用的是Visual Studio Express Edition,它没有任何分析器或代码分析器。

具有两个代理执行相同任务的代码,一个使用匿名方法,另一个使用Lambda表达式。我想比较哪一个花费更少的时间。

我如何在VS express中执行此操作? (不仅是方法代表)

如果是重复,请链接。

由于

我试过像这样:

        /** Start Date time**/
        DateTime startTime = DateTime.Now;
        /********do the square of a number by using LAMBDA EXPRESSIONS********/
        returnSqr myDel = x => x * x;
        Console.WriteLine("By Lambda Expression Square of {0} is: {1}", a,myDel(a));
        /** Stop Date time**/
        DateTime stopTime = DateTime.Now;
        TimeSpan duration = stopTime - startTime;
        Console.WriteLine("Execution time 1:" + duration.Milliseconds);



        /** Start Date time**/            
        DateTime startTime2 = DateTime.Now;
        /*****do the square of a number by using ANONYMOUS EXPRESSIONS********/
        returnSqr myDel1 = delegate(int x) { return x * x;};
        Console.WriteLine("By Anonymous Method Square of  {0} is: {1}", a, myDel1(a));
        /** Stop Date time**/
        DateTime stopTime2 = DateTime.Now;
        TimeSpan duration2 = stopTime2 - startTime2;
        Console.WriteLine("Execution Time 2:" + duration.Milliseconds);

输出给出:

执行时间1:0
执行时间2:0


为什么这样?

5 个答案:

答案 0 :(得分:15)

您可以使用秒表课程。

Stopwatch sw = Stopwatch.StartNew();
// rest of the code
sw.Stop();
Console.WriteLine("Total time (ms): {0}", (long) sw.ElapsedMilliseconds);

答案 1 :(得分:4)

使用StopWatch类在代码运行之前启动计时器,并在代码结束后停止它。对两个代码片段执行此操作,并找出需要花费时间的内容。

这不是一个完美的解决方案,但它有帮助

答案 2 :(得分:0)

您可以考虑使用支持简单开始/结束使用的Scenario类,并通过ETW进行可选的日志记录。

来自他们的Wiki:

  

您可以使用Scenario类将性能检测添加到应用程序(.NET或本机C ++)。方案的最短描述是“一个名为秒表,可以在您启动和停止时记录”。

答案 3 :(得分:0)

只需使用秒表类就可以了。

答案 4 :(得分:0)

最有可能的是,您的代码执行速度比计时设备的最大分辨率更快。这就是为什么它报告“0”毫秒作为两段代码的执行时间:时间量已经过去的是无法察觉的。对于某些人来说,这可能足以得出结论,这可能无关紧要。

但是,如果准确比较每种方法的速度很重要,您可以尝试在紧密的循环中运行代码。基本上,无论你是什么 连续执行大约100或1,000甚至一百万次,但需要花费很多时间才能在您的计时设备上注册。显然,在最终代码中运行例程一次甚至几次都不会花费那么长的时间,但至少它会让你知道每个选项的相对速度。