7

有什么方法可以找到代码的大小和执行时间,以便我可以比较两个代码并决定哪个更好?

例如,假设我想找到这个的大小和执行时间

代码 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
4

3 回答 3

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;
于 2012-06-21T20:48:50.297 回答
3

要测量您应该使用的执行时间StopWatch- 如果您想要一个适当的基准,您将需要多次运行多次迭代并将它们平均。

var sw = new StopWatch();
sw.Start();

// do a million iterations

sw.Stop();

var time = sw.Elapsed;

至于内存大小 - 您可以使用许多可用的内存分析器之一 - ANTS 内存分析器dotTrace是两个商业选项。

于 2012-06-21T20:49:23.230 回答
2

您可以使用FileInfo类(参见Length属性)来确定文件的大小。

您可以使用Stopwatch类来确定运行程序需要多长时间。

于 2012-06-21T20:48:02.217 回答