2009-05-04 40 views
1

我想追蹤一個c#移動應用程序內的性能,以瞭解一些長時間運行的方法所需的時間量。目標是在方法層面瞭解性能。 該跟蹤將在運行時決定。在c#中的性能跟蹤

說出來的第一個想法是維持一個全局變量「doWeHaveToTrace」,每一個potentialy tracable方法被調用的時間來檢查它,跟蹤它,如果這個變量是真實的。 而在這種情況下,我可能會使用Logger或TraceListener將跟蹤信息寫入文件。

但我認爲這種機制是相當重的,因爲一個變量在每個方法進行檢查,並記錄呼叫必須被編碼。

我也想過方面編程(插入之前()和()之後方法跟蹤代碼),但我不認爲編程方面可能這個項目中是允許的。

所以我在想,有沒有可能提供這樣的性能跟蹤任何其他好的機制?是否有可能追蹤整個方法?並決定在運行時停止或恢復跟蹤?

我希望我是清楚的, 感謝

回答

2

不知道你想什麼追查,但如果你想跟蹤長時間運行的方法之間的時間,也許你會更好鉤住.NET Profiling API。這裏是一個tutorial on usage.

一個商用分析器將是另一個,更簡單的選擇。

0

閱讀有關如何Compile Conditionally with Trace and Debug在.NET(假設你使用.NET)。 跟蹤調試類將爲您提供開發所需的所有運行時輸出。然後,只需刪除TRACE編譯器指令,就可以刪除已部署應用程序中的所有調試/跟蹤代碼(以及相關的運行時開銷)。

OR

您可以使用外部分析應用做你的性能和內存分析。看到這裏(來自StackOverflow.com):What Are Some Good .NET Profilers?

享受,

羅伯特C. Cartaino

0

你能只是一個臺式機上運行它,一個IDE之下,做平常的事情,比如時鐘它和/或sampling?

你一定能夠找到的東西,正在服用的時間和可能加快。