ECLIPSE中添加TPTP插件


轉自:http://blog.csdn.net/sinboy/article/details/1536625

程序在實際應用當中,大數據量時對系統本身的影響是一個不得不面對的問題。

最早在使用Jbuilder時,它有個相配套的工具叫Optimize Suite,可以在JBuilder中使用,也可獨立使用,用它可以監測運行的並發線程數據、內存的使用情況等,也是不款非常不錯的性能測試套件。可惜隨着JBuilder的衰落它也漸漸消失在人們的視線中了。我記得還有一個獨立的性能測試工具叫JProfiler,從名字上就能看出它是用來干么的,當時好象也是倍受好評的一款工具。

Eclipse崛起后,插件迅速流行,我也非常喜歡這種“按需分配”的模式,用到什么就添加什么。以前對性能這方面的意識不是很強,但上次出現一次教訓后,慢慢變的重視起來。人總是在經歷過一些教訓之后才會長成色:)

首先想到是從Eclipse官方網站找,果然沒有讓我失望。ECLIPSE官方有一個Test & Performance Tools Platform (TPTP)的項目,很早就有了,只是以前沒有關注過,現在最新的穩定版本已經是4.3.1了。可以進行程序執行時間的統計分析、內存的監控、對象調用的分析等,我現在都關注的是的功能是Execution Statistics(程序執行統計),可以顯示程序當中開銷最大的10個方法也就是系統的瓶頸。找到了瓶頸,我們就可以想方設法去解決它了,或優化或重寫,對症下葯,不用再無的放失。

其實TPTP的使用很簡單,但在下載使用的時候一定要注意TPTP插件本身的版本和ECLIPSE版本的配合,否則很可能會重蹈我連試好幾次都無法正常運行的覆轍。下面簡單說一下安裝和使用的步驟:

1.從ECLIPSE官方網站下載TPTP4.3.1版本,和它相應的ECLIPSE版本是3.2.2,如圖一所示:

                                                                圖一

2.安裝完成后,重新啟動ECLIPSE,必要的話請加上參數-clean進行清理。如果安裝正常,在標准按鈕一欄會顯示TPTP的快捷圖標,如圖二所示:

                                                      圖二

3.選擇你要進行性能測試的工程的主類,在該主類上用右鍵點擊,菜單上會出現Profile as,再選擇java application。當然,如果你的工程不是JAVA應用程序,而是web程序,你還需要安裝相應的web插件WTP,選擇Profile on serve即可,如下圖三所示:

                                                        圖三 

4.之后,會顯示一個選擇監控項目的窗口,它默認的監測項目有三個:內存分析(Basic Memory  Analysis)、執行時間分析(Executeion Time Analysis)、代碼覆蓋(Method Code Coverage),如下圖四所示:

                                                              圖四

5.點擊確定按鈕,程序開始運行,同時監控也將開始,ECLIPSE會切換的監控視圖,如下圖五所示:

                                                                              圖五

6.雙擊監項目,可以看到具體的監控結果,如下圖六所示:

                                                                                 圖六

7.從上面監控結果來看,很清楚地知道了系統中開銷最大的現個方法,奇怪的是這個幾在平時看來並不特別的方法怎么會有如此大的開銷呢?仔細分析代碼發現,每次用數據過來之后,在處理之前和處理完畢后都要判斷發送者是移動號碼還是聯通號碼,在判斷號碼時又調用了字符串全角轉半角的方法quan2ban(String str)。噢,原來如此呀。雖然在全轉半時考慮到了全角數字的情況,但實際系統的運行過程,這一可能性幾乎不會出現,所以可以把quan2ban()方法從中移除,開銷大大減少。isAllChinese()方法也是如此,代碼調整后再次測試,結果如下圖七所示:

                                                                                       圖七

8.雖然有了大大的改進,但這兩個方法好象還被多次調用,問題何在?對方法的調用情況做進一步的分析得知,在程序初始化詞典庫時,會用過該兩方法,但初始化並不影響系統的正常數據處理,可以先把初始化的過程屏蔽掉,再次測試,結果如下圖八所示:

                                                                               圖八

9.很奇怪,開銷最大的竟然是四個類的構造函數,真的是一頭霧水,構造函數里並沒有執行什么操作,怎么可能會有如此大的開銷呢?況且我剛剛對對象的創建做過測試,幾乎是不花費多少開銷的。經過仔細研究發現,日志的輸出我用到了LOG4J這個實用的工具,並且為了使日志輸出能夠按照我自定義的方式進行,每個類在創建時我都調用了一這樣一句:PropertyConfigurator.configure(ConfParam.LOG4J_PROP_CONF);難道是加載配置參數的原因?把這一句屏蔽掉,問題果然消除。一一對開銷比較大的方法進行分析優化,使系統的處理能力有了很大的改觀。

在TPTP的學習使用當中,我主要用到了執行時間分析這一項監控功能,因為我系統的主要問題出現在執行的效率上,如果是內存開銷的問題,你可以把注意力集中到內存分析上。當然TPTP還有其它很強大的功能,有待進一步的學習和研究。

提示:使用TPTP進行性能測試時,系統啟動的時間和運行的時間都可能遠遠超出正常運行的時間,我原來正常1分鍾完成初始化的過程,啟用TPTP后竟然長達10幾分鍾,暈。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM