[英]dotTrace - what profiling settings should I use for my desktop app?
使用dotTrace時,我必須選擇一種分析模式和一種時間測量方法。 分析模式為:
時間測量方法是:
跟蹤和逐行不能使用線程時間測量。 但這仍然給我提供了七個不同的組合來嘗試。 現在,我已經閱讀了很多關於dotTrace幫助頁面的信息,而我的知識仍然比開始選擇哪一個更加了解。
我正在使用WPF應用程序,該應用程序讀取Word文檔,提取所有段落和樣式,然后遍歷提取的內容以挑選文檔部分。 我正在嘗試優化此過程。 (當前需要花費一個多小時才能完成,所以我正在嘗試在給定的時間范圍內進行分析,而不是直到完成為止。)
哪種配置文件和時間測量類型會給我最好的結果? 或者,如果答案是“取決於”,那么它取決於什么? 給定的配置文件模式或時間測量方法的優缺點是什么?
分析類型:
采樣 :最快但最不准確的分析類型,最小的探查器開銷。 從本質上講,等同於每秒多次暫停程序並查看堆棧跟蹤; 因此,每個方法的調用次數是近似的。 對於在方法級別識別性能瓶頸仍然有用。
以采樣模式捕獲的快照在磁盤上的占用空間要少得多(我說要少5-6個空間。)用於初始評估或對運行時間較長的應用程序進行性能分析(聽起來像您的情況)。
跟蹤 :記錄每種方法所花費的時間。 正在剖析的應用程序運行速度較慢,但作為回報,dotTrace會顯示每個函數的確切調用次數,並且函數計時信息會更准確。 這有利於在方法級別深入研究問題的細節。
逐行 : 逐行描述程序。 最大的資源消耗,但最細粒度的分析結果。 減緩降編程方式 。 這里的首選策略是首先使用其他類型進行概要分析,然后手動選擇功能以逐行進行概要分析。
至於儀表類型,我認為偉大的哈迪·哈里里(Hadi Hariri)在dotTrace Performance入門中對它們進行了很好的描述。
掛鍾時間(CPU指令) :這是測量掛鍾時間(即我們在掛鍾上觀察到的時間)的最簡單,最快的方法。 但是,在一些較舊的多核處理器上,由於內核計時器不同步,這可能會產生錯誤的結果。 在這種情況下,建議使用性能計數器。
牆壁時間(性能計數器) :性能計數器是Windows API的一部分,它允許以與硬件無關的方式進行時間采樣。 但是,作為API調用,每項措施都需要花費大量時間,因此會影響已分析的應用程序。
線程時間 :在多線程應用程序中,並發線程會增加彼此的時間。 為了避免這種干擾,我們可以使用線程計時器來進行系統API調用,以獲取OS調度程序給線程分配的時間。 缺點是獲取線程時間樣本比使用CPU計數器要慢得多,並且精度還受到線程調度程序使用的量子大小(通常為10ms)的限制。 僅在“分析類型”設置為“采樣”時才支持此模式。
但是它們相差不大。
我不是自我剖析的向導,但在您的情況下,我將從采樣開始以獲取要花很長時間才能執行的功能列表,然后將其標記為逐行進行剖析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.