簡體   English   中英

dotTrace-我的桌面應用程序應使用哪些配置設置?

[英]dotTrace - what profiling settings should I use for my desktop app?

使用dotTrace時,我必須選擇一種分析模式和一種時間測量方法。 分析模式為:

  • 追蹤
  • 逐行
  • 采樣

時間測量方法是:

  • 掛牆時間(性能計數器)
  • 線程時間
  • 掛牆時間(CPU指令)

跟蹤和逐行不能使用線程時間測量。 但這仍然給我提供了七個不同的組合來嘗試。 現在,我已經閱讀了很多關於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM