進一步的性能調優(yōu)
如果你恰好足夠幸運遇到了一位非?量痰挠脩,對目前的性能水平還不夠滿意。那我們需要對現(xiàn)在的代碼進一步進行優(yōu)化以提高性能。
從新進行上面的步驟,首先以所有方法的執(zhí)行時間進行排序。之后按照耗時的順序從前往后進行分析。根據對前面幾個方法的分析,我們發(fā)現(xiàn),前面幾個方法耗時較多的原因也都是因為終調用了我們的 parseContent 方法。
按照上面的步驟,點擊該方法以分析其具體執(zhí)行狀況:
在該方法的 Selected method incokes 部分,我們可以看到,createParser 耗費了大部分的運行時間。我們可以從兩方面入手進行性能調優(yōu),一是改善該段代碼執(zhí)行邏輯以增強性能,例如我們的第一輪修改中,從 DOM 的分析模式改為 SAX 模式。另外是從代碼的調用次數上入手,減少性能不佳代碼的調用次數。例如在這里,通過進一步分析,具有性能瓶頸的方法用于產生用于 XML 分析的解析器,邏輯非常簡單,但卻被調用了 24 次。所以我們可以從減少次數的角度來增強性能。
分析代碼,我們可以創(chuàng)建一個 SAX 解析器的私有變量以在每次解析 XML 的過程中重用同一個解析器對象。以如下的方式修改代碼:
重用 SAX 解析器對象的代碼
private
SAXParser _saxParser;
protected
SAXParser createParser() throws
ParserConfigurationException, SAXException
{
if
(_saxParser == null
)
{
SAXParserFactory f = SAXParserFactory.newInstance
();
f.setValidating(false
);
_saxParser = f.newSAXParser();
}
return
_saxParser;
}
之后再次執(zhí)行分析過程,會發(fā)現(xiàn),parseContent 方法的執(zhí)行時間已經被縮減到了 0.017s 左右。通過我們的性能分析可調優(yōu),一個完成同樣任務的方法,其執(zhí)行時間已經從 0.5s 降低到了 0.017s,相信苛刻的客戶也可以接受這樣的結果了吧。
本文通過一個示例說明了在 Eclipse 插件開發(fā)過程中如何使用 TPTP 進行性能分析和調優(yōu)?梢钥吹,使用 TPTP 可以對程序運行時的各種數據進行直觀化、圖形化的分析。通過該工具的幫助,性能調優(yōu)以及程序運行時狀態(tài)的分析其實是一件非常容易的事情。