<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                Visual studio 2010 的Profiler是自帶的性能工具, 利用它我們可以找出程序中的性能瓶頸,然后不斷優化不斷再測試。 ### 簡介 Profiler有利用向導啟動程序和后期附加到程序兩種關聯被測模塊的方式,測試方式也有兩種:**Sampling(采樣)**和**Instrumentation(檢測)**。 - Sampling:按設置的時間間隔中斷計算機處理器并收集函數調用堆棧。 調用堆棧是一個動態結構,用于存儲有關正在處理器上執行的函數的信息。這個分析方法形成的結果就是各個函數在運行時被采樣的次數,次數越大代表開銷越大。因為對被測源碼不需要更改,所以直接啟動或者后期附加到被測程序都可以。 - Instrumentation:在被測源碼文件中**目標函數的開始和結尾**以及這些函數**對其他函數的每次調用前后**插入代碼。 插入的代碼記錄了以下信息: 1. 此收集事件與上一收集事件之間的間隔。 1. 在此間隔內操作系統是否執行了操作。 例如,操作系統可能讀寫磁盤,或者在目標線程與另一個進程中的另一個線程之間進行切換。 *根據”Tools\Options\Performance Tools\“ 下‘Show time values as:’的默認設置為Milliseconds,我覺得采樣周期應該是毫秒級,也就是說報告中采樣次數可以約等于毫秒。* ### 使用 1. 用管理員啟動Visual Studio 1. 針對Release版本的程序 1. 設置好程序所需的pdb路徑 通過‘Analyze\Launch Performance Wizard…’ 或者‘Analyze\Profiler\Attach or Detach…’對被測程序進行新建Performance Session(性能會話), 我們主要介紹下Sampling通過Attach To Process的情況下報告的分析。 Profiler開始后,類似: ![enter image description here](https://box.kancloud.cn/2016-02-18_56c559316d377.jpg "") 當你覺得已經收集了足夠的信息可以停止后, 點擊‘Stop profiling’, 類似: ![enter image description here](https://box.kancloud.cn/2016-02-18_56c559317ffdb.jpg "") 上述界面就是報告的Summary, 我們開始分析程序的性能瓶頸。 - **‘Hot Path’**指的就是采樣次數高的,也就是性能瓶頸的函數。 - **‘Inclusive Samples’**指的是該函數整體被采樣的次數,說白了,就是函數本身以及它所調用的所有子函數的總共開銷大小。 - **‘Exclusive Samples’**指的是該函數本身被采樣的次數,說白了,也就是函數自己的開銷大小,不包含它所調用的子函數的開始。 - **‘Funcions Doding Most Individual Work’**指的是開銷最大的單個函數,因此它的指標是用‘Exclusive Samples’來表示。 通過上述幾個介紹,我們就可以從圖中得到性能瓶頸的函數, 然后根據Call Tree可以得到完整的調用上下文。 例如,在Summary界面中點擊CallTree,按照‘Inclusive Samples’排序,按照開銷大小展開方法,最終就可以得到開銷大的函數上下文, 類似: ![enter image description here](https://box.kancloud.cn/2016-02-18_56c559319e426.jpg "") 當然,我們也可以通過上面的過濾條件選擇”Modules“、”Threads“等方式來找到自己關心的瓶頸。 另外, 我們還可以在Summary界面選擇‘Show Just My Code’和適當的CPU時間段來過濾。 參考:[Analyzing Application Performance by Using Profiling Tools](https://msdn.microsoft.com/en-us/library/z9z62c29%28v=vs.100%29.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看