繁体   English   中英

如何测量C#中每一行的执行时间

[英]How do I measure execution time for each row in C#

我有以下硒测试:

[TestMethod]
public void Edit()
{
    Driver.GoToAdministrera();

    Driver.ClickLink(strings.ActorSettings);

    Driver.SendKeysToId(text, "Attributes");

    Driver.Navigate().Refresh();

    Driver.AssertTextInId(string.Empty, "Attributes");

    Driver.SendKeysToId(text, "Attributes");

    Driver.ClickClass("submitbutton");

    Thread.Sleep(3000);

    Driver.Navigate().Refresh();

    Driver.AssertTextInId(text, "Attributes");
}

它很慢,我想分析瓶颈在哪里。 我知道我可以描述测试,但是那会给我一些漫长的堆栈跟踪和热点。 我只想知道每一行的执行时间。

我知道我可以使用StopWatch类。 我什至可以为此做一些帮助方法:

protected static void Time(Action action)
{
    var sw = new Stopwatch();
    sw.Reset();
    sw.Start();

    action();

    sw.Stop();
    Console.WriteLine(sw.Elapsed + " " + action.Method.Name);
}

但这需要我修改测试。

有谁知道一种方法来获取一段代码中每一行的计时?

DateTime start = DateTime.Now;
// Do Processing
Driver.GoToAdministrera();
DateTime end = DateTime.Now;
Console.WriteLine("Time taken : " + (end - start));

如果您使用Visual Studio 2015或更高版本,则可以在调试器下运行测试,并查找PerfTips值。 从一行到另一行,您将获得测试的每行经过时间的估计值,这可能是您所需要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM