如何测量 C# 中每一行的执行时间
How do I measure execution time for each row in C#
我有以下 Selenium 测试:
[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");
}
速度慢,想分析一下瓶颈在哪里。我知道我可以分析测试,但这会给我一些长堆栈跟踪和热点。我只想知道每一行的执行时间有多长。
我知道我可以使用秒表 class。我什至可以为此做一些类似帮助方法的事情:
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 值。从一行到另一行,您将获得每行测试所用时间的估计值,这可能是您需要的。
我有以下 Selenium 测试:
[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");
}
速度慢,想分析一下瓶颈在哪里。我知道我可以分析测试,但这会给我一些长堆栈跟踪和热点。我只想知道每一行的执行时间有多长。
我知道我可以使用秒表 class。我什至可以为此做一些类似帮助方法的事情:
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 值。从一行到另一行,您将获得每行测试所用时间的估计值,这可能是您需要的。