我有以下Selenium測試:如何測量每一行的執行時間在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);
}
但是這需要我修改我的測試。
有誰知道一種方法來獲取執行一段代碼中的每一行的時間?
如果您使用Visual Studio 2012或更新版本進行開發,爲什麼不使用內置工具來分析代碼和分析應用程序? – Alex
這會給我一些長的堆棧跟蹤和熱點。我只想知道每行的執行時間。 – Drutten
如果您使用該分析器,只需查找以上每個例程的包含百分比。該剖析器有一個缺點 - 它會在I/O或其他堵塞時丟棄樣本,所以如果這是緩慢的原因,它將不會顯示它。儀表模式對你來說可能已經足夠好了,儘管它丟失了行級別的信息。始終有效的方法是[*這一個*](http://stackoverflow.com/a/378024/23771)。 –