有没有办法找到代码大小和执行时间是什么,所以我可以比较两个代码并确定哪个代码更好?
例如,假设我想查找此
的大小和执行时间代码1
for(int i=0; i<5; i++)
{
sum+=1;
}
和这个
代码2
for(int i=0; i<=4; i++)
{
sum = sum + 1;
}
决定哪个更好(我现在不关心这个例子)。例如,结果将是:
Code 1:
Size: ? KB
Time: ? ms
Code 2:
Size: ? KB
Time: ? ms
答案 0 :(得分:15)
您可以使用市场上的ANTS Profiler http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/(应付产品但有试用版)或其他一些Profiler产品(ANTS,vTune,OptimizeIt,DevPartner,YourKit,dotTrace)。
您也可以通过设置一些使用手动StopWatch工具执行这两个功能的单元测试来比较执行时间(更快,更便宜),从而自行完成这些功能。如果您需要稍后更改实施,单元测试还可以确保您没有任何性能回归。 http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx
var stopWatch = new Stopwatch();
stopWatch.Start();
var result = CallFunction();
stopWatch.Stop();
var executionTime = stopWatch.Elapsed;
答案 1 :(得分:3)
要测量执行时间,您应该使用StopWatch
- 如果您需要适当的基准测试,则需要多次运行多次迭代并将其平均。
var sw = new StopWatch();
sw.Start();
// do a million iterations
sw.Stop();
var time = sw.Elapsed;
至于内存大小 - 您可以使用众多内存分析器中的一个 - ANTS memory profiler,dotTrace是两个商业选项。
答案 2 :(得分:2)