• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 利用TPTP對Java程序進行性能測試[3]

    發表于:2010-03-05來源:作者:點擊數: 標簽:性能測試javaJAVAJava程序
    利用 TPTP 對Java程序進行性能測試[3] 性能測試工具 分析到這里,讓我們看看createParser() 方法的執行細節。 通過方法createParser() 打開Method Invocation Details 視圖 下面我們通過Method Invocation Details 視圖來看看createParser() 調用慢的原因。

      利用TPTP對Java程序進行性能測試[3]   性能測試工具

      分析到這里,讓我們看看createParser() 方法的執行細節。

      通過方法createParser() 打開Method Invocation Details 視圖

      下面我們通過Method Invocation Details 視圖來看看createParser() 調用慢的原因。在Execution Statistics視圖中雙擊createParser() 方法就可以打開Method Invocation Details 視圖

      顯示了方法createParser()的執行信息,就像你看到的一樣,該方法被readData(java.lang.String)調用了一次,同時它調用了5個不同的方法,在invoked methods 表中,你能看見newSAXParser() 和newInstance() 方法可能就是createParser()方法執行慢的原因,這兩個方法跟createParser()被調用24次一樣,也被執行了24次。

      為診斷出的性能問題定義一個解決方案

      通過分析以上這些數據,我們發現改進createParser()執行時間的一個途徑就是改進SAXParserFactory的兩個方法的執行,既然我們無法控制這些方法的實現,唯一的途徑就是減少調用這些方法的次數。

      解決方案是創建一個parser實例,并且復用其去解析所有的xml文件,取代原來每解析一個文件就創建一個parser實例的做法。讓我們打開源代碼并且修復它。

      提示:在進行任何之類優化之前,要確保被代碼支持。例如,當SAXParser不能同時被多線程使用時,實例能被復用;嚴格來將,實例在復用之前應該被重置(reset),擁有一套全面的單元測試集來檢驗這些修改是個不錯的主意。

      在源代碼中應用性能優化

      可以在Method Invocation Details視圖中右鍵-->Open Source來打開源代碼。

      顯示了createParser()方法的源代碼。注意該方法每次調用都創建一個新的SAX parser 。更新代碼,只創建一個parser實例,復用于解析每個xml文件定義了一個全局的SAXParser 實例變量parser,createParser()方法初始化parser然后在每次被調用時返回該實例。

      讓我們再次執行一下Product catalog程序,驗證修復的結果。  軟件測試

      驗證性能優化

      在Java透視圖中選擇Product類,右鍵--->Profile As -->Java Application,程序執行完后,打開Execution Statistics 視圖,比較執行時間,正如你看到的,createParser()方法的執行時間已經僅有19%,而在優化執行卻是將近 43%。注意,隨著xml文件數量的增加,提升的值將更加明顯,所以,隨著product文件的增加而減少的程序執行時間將是指數級的。

      總結:

      本文論述了TPTP性能測試工具能被用于分析和解決性能問題,本文沒有涉及TPTP工具更多的其他使用方面,

      如果你想了解更多的關于TPTP工具的能力,有一套的教程和用戶手冊在這里。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>