我使用的是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
为什么这样?
答案 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甚至一百万次,但需要花费很多时间才能在您的计时设备上注册。显然,在最终代码中运行例程一次甚至几次都不会花费那么长的时间,但至少它会让你知道每个选项的相对速度。