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

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

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試之Java性能的優化

    發布: 2009-3-31 10:39 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 94次 | 進入軟件測試論壇討論

    領測軟件測試網

    (3) JAVA應用程序的實現

    當討論應用程序的性能問題時,大多數的程序員都會考慮程序的代碼,這當然是對的,當更重要的是要找到影響程序性能的瓶頸代碼。為了找到這些瓶頸代碼,我們一般會使用一些輔助的工具,如Jprobe,Optimizit,Vtune以及一些分析的工具如TowerJ Performance等。這些輔助的工具能跟蹤應用程序中執行每個函數或方法所消耗掉的時間,從而改善程序的性能。

    (4) 硬件和操作系統

    為了提高JAVA應用程序的性能,而采用跟快的CPU和更多的內存,并認為這是提高程序性能的唯一方法,但事實并非如此。實踐經驗和事實證明,只有遭到了應用程序性能的瓶頸,從而采取適當得方法,如設計模式,布署的環境,操作系統的調整,才是最有效的。

    3.程序中通常的性能瓶頸。

    所有的應用程序都存在性能瓶頸,為了提高應用程序的性能,就要盡可能的減少程序的瓶頸。以下是在JAVA程序中經常存在的性能瓶頸。

    了解了這些瓶頸后,就可以有針對性的減少這些瓶頸,從而提高JAVA應用程序的性能

    4. 提高JAVA程序性能的步驟

    為了提高JAVA程序的性能,需要遵循如下的六個步驟。

    a) 明確對性能的具體要求

    在實施一個項目之前,必須要明確該項目對于程序性能的具體要求,如:這個應用程序要支持5000個并發的用戶,并且響應時間要在5秒鐘之內。但同時也要明白對于性能的要求不應該同對程序的其他要求沖突。

    b) 了解當前程序的性能

    你應該了解你的應用程序的性能同項目所要求性能之間的差距。通常的指標是單位時間內的處理數和響應時間,有時還會比較CPU和內存的利用率。

    c) 找到程序的性能瓶頸

    為了發現程序中的性能瓶頸,通常會使用一些分析工具,如:TowerJ Application Performance Analyzer或VTune來察看和分析程序堆棧中各個元素的消耗時間,從而正確的找到并改正引起性能降低的瓶頸代碼,從而提高程序的性能。這些工具還能發現諸如過多的異常處理,垃圾回收等潛在的問題。

    d) 采取適當的措施來提高性能

    找到了引起程序性能降低的瓶頸代碼后,我們就可以用前面介紹過的提高性能的四個方面,即設計模式,JAVA代碼的實現,布署JAVA的環境和操作系統來提高應用程序的性能。具體內容將在下面的內容中作詳細說明。

    e) 只進行某一方面的修改來提高性能

    一次只改變可能引起性能降低的某一方面,然后觀察程序的性能是否有所提高,而不應該一次改變多個方面,因為這樣你將不知道到底哪個方面的改變提高了程序的性能,哪個方面沒有,即不能知道程序瓶頸在哪。

    f) 返回到步驟c,繼續作類似的工作,一直達到要求的性能為止。

    二. JAVA布署的環境和編譯技術

     開發JAVA應用程序時,首先把JAVA的源程序編譯為與平臺無關的字節碼。這些字節碼就可以被各種基于JVM的技術所執行。這些技術主要分為兩個大類。即基于解釋的技術和基于提前編譯為本地碼的技術。其示意圖如下:

    具體可分為如下的五類:  

    a) 解釋指令技術

    其結構圖和執行過程如下:

    JAVA的編譯器首先把JAVA源文件編譯為字節碼。這些字節碼對于JAVA虛擬機(JVM)來講就是機器的指令碼。然后,JAVA的解釋器不斷的循環取出字節碼進行解釋并執行。

     這樣做的優點是可以實現JAVA語言的跨平臺,同時生成的字節碼也比較緊湊。JAVA的一些優點,如安全性,動態性都得保持;但缺點是省生成的字節碼沒有經過什么優化,同全部編譯好的本地碼相比,速度比較慢。

    b) 及時編譯技術(Just In Time)

      及時編譯技術是為了解決指令解釋技術效率比較低,速度比較慢的情況下提出的,其結構圖如下所示。

    其主要變化是在JAVA程序執行之前,又JIT編譯器把JAVA的字節碼編譯為機器碼。從而在程序運行時直接執行機器碼,而不用對字節碼進行解釋。同時對代碼也進行了部分的優化。

    這樣做的優點是大大提高了JAVA程序的性能。同時,由于編譯的結果并不在程序運行間保存,因此也節約了存儲空間了加載程序的時間;缺點是由于JIT編譯器對所有的代碼都想優化,因此也浪費了很多的時間。

    IBM和SUN公司都提供了相關的JIT產品。

    c) 適應性優化技術(Adaptive Optimization Technology)

    同JIT技術相比,適應性優化技術并不對所有的字節碼進行優化。它會跟蹤程序運行的成個過程,從而發現需要優化的代碼,對代碼進行動態的優化。對優化的代碼,采取80/20的策略。從理論上講,程序運行的時間越長,代碼就越優化。其結構圖如下:

    其優點是適應性優化技術充分利用了程序執行時的信息,發行程序的性能瓶頸,從而提高程序的性能;其缺點是在進行優化時可能會選擇不當,發而降低了程序的性能。

    其主要產品又IBM,SUN的HotSpot.

    d) 動態優化,提前編譯為機器碼的技術(Dynamic Optimization,Ahead Of Time)

    動態優化技術充分利用了JAVA源碼編譯,字節碼編譯,動態編譯和靜態編譯的技術。其輸入時JAVA的原碼或字節碼,而輸出是經過高度優化的可執行代碼和個來動態庫的混合(Window中是DLL文件,UNIX中是共享庫.a .so文件)。其結構如下:

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    22/2<12

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品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>