簡體   English   中英

如何在不同的上下文中調試執行時間不同的問題

[英]How to debug issues with differing execution times in different contexts

與最近的大多數其他問題相比,以下問題似乎更困擾我。 您建議我建議在嘗試調試此類“性能問題”時會尋找什么樣的東西?

好的,得到這個-在查詢分析器中運行它需要<1秒

exec usp_MyAccount_Allowance_Activity '1/1/1900', null, 187128

在本地調試,這需要10秒鍾:

DataSet allowanceBalance =
    SqlHelper.ExecuteDataset(
        WebApplication.SQLConn(), 
        CommandType.StoredProcedure, 
        "usp_MyAccount_Allowance_Activity",
        Params);

相同的參數

真正要回答的可怕問題-調試程序中的代碼與調試程序中的代碼相比,Heisenbug計時問題的所有方式都會引入各種可能會為您帶來麻煩的事情,而這些問題您永遠都不會知道。

調試器傾向於將手指放在所有可能影響性能的地方。

  • 調試事件。 調試器在應用程序加載,執行,dll加載/卸載,關閉期間獲取特殊事件。 調試器將在這些事件中執行所需的任何操作。 這將成為放緩的根源。
  • 調試輸出。 OutputDebugString()和所有使用它的代碼(例如,.Net中的跟蹤輸出)突然變為活動狀態。 太慢了
  • HeapAlloc()系列函數在調試器下運行時開始檢查各種堆不一致問題,這會花費更多時間。
  • 如果您打開了符號發現功能,則可能會有延遲,因為需要查詢各種符號服務器並根據需要進行下載(如果下載了符號,則會發現延遲)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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