有没有找到应用程序瓶颈的好方法?

时间:2011-12-07 17:08:07

标签: c#

我正在试图弄清楚最好的方法是找出我的应用程序的哪些部分运行时间最长(最大的运行成本)。该应用程序并不过分复杂,但我想确保我已经正确调整了所有部分,以便我可以处理更大的负载。

应用程序:加载/粉碎xml文档并将内容转储到数据库中。该应用程序使用Linq to XML来解析xml,并使用SQL Server TVP将数据传递给DB。因为我正在使用TVP,所以即使数据集合数据不大(XML文件最多为1MB),我也可以往返数据库。

非常感谢任何有关如何隔离瓶颈的建议。

总是非常感谢反馈。

3 个答案:

答案 0 :(得分:5)

您可能需要查看StopWatch课程。您可以将它洒在代码中,如下所示:

// load XML Method
var stopWatch = new Stopwatch();
stopWatch.Start();
// run XML parsing code
stopWatch.Stop();

var xmlTime = stopWatch.Elapsed;


// SQL Server dump Method
var stopWatch = new Stopwatch();
stopWatch.Start();
// dump to SQL Server
stopWatch.Stop();

var sqlTime = stopWatch.Elapsed;

这是一种采用一般测量的低技术方法。对于一个简单的应用程序,这可能比分析器更有效,因为您的应用程序只有两个真正的瓶颈点。也就是说,学习如何使用分析器可能值得你花时间。

答案 1 :(得分:2)

基于Nate的答案,你可以轻松完成任务,并为此目的使用小帮手方法。

public static Int64 MeasureTime(Action myAction)
{
    var stopWatch = new Stopwatch();
    stopWatch.Start();
    myAction();
    stopWatch.Stop();
    return stopWatch.ElapsedMilliseconds;
}

样本用法:

StringBuilder result;
Console.WriteLine("Parse-Xml: {0}", MeasureTime(() => result = MyAction("Test.xml")));

答案 2 :(得分:0)

执行此操作的常用方法是使用分析工具。我使用RedGate ANTS来分析C#应用程序,它运行良好,但是there are plenty of alternatives