2013-02-04 71 views
-1

我正在評估我正在編寫的程序的性能。Visual Studio性能分析器:開放式支架上的線數

我有一個方法:

public double FooBar(ClassA firstArg, EnumType secondArg) 
{ 
    [...] 

如果我檢查在VS服務表現分析儀FooBar的功能細節,我可以看到,該方法佔的總時間(含)14%,而10 %在方法本身中花費了。我無法理解的是,它看起來總體時間的6.5%(包含和排他性)都花在了這種方法的大括號中;它實際上是代碼中最耗時的行(作爲獨佔時間考慮)。

該方法不覆蓋任何其他方法。該配置文件在調試配置中使用採樣完成,運行持續大約150秒,6.5%對應於總共48000箇中的超過3000個採樣。

有人可以解釋我在這一行發生了什麼,如果有是一種改善這種行爲的方式?

回答

1

在該方法的第一個大括號中顯示了用於方法初始化的時間量。

在方法初始化過程中,局部變量被分配和初始化。 請注意,如果在主體中間聲明瞭方法的所有局部變量,也會在執行前初始化。

爲了減少初始化時間,嘗試移動堆中的局部變量,或者,如果僅在有時使用(如if分支內的變量或返回後),則使用另一種方法提取使用它們的代碼片段。