有更大的靈活性,而且不會自動同步。
■方法內嵌:只有在方法屬于final(最終)、private(專用)或static(靜態)的情況下,Java編譯器才能內嵌這個方法。而且某些情況下,還要求它絕對不可以有局部變量。若代碼花大量時間調用一個不含上述任何屬性的方法,那么請考慮為其編寫一個“final”版本。
■I/O:應盡可能使用緩沖。否則,最終也許就是一次僅輸入/輸出一個字節的惡果。注意JDK 1.0的I/O類采用了大量同步措施,所以若使用象readFully()這樣的一個“大批量”調用,然后由自己解釋數據,就可獲得更佳的性能。也要注意Java 1.1的“reader”和“writer”類已針對性能進行了優化。
■造型和實例:造型會耗去2到200個單位的賦值時間。開銷更大的甚至要求上溯繼承(遺傳)結構。其他高代價的操作會損失和恢復更低層結構的能力。
■圖形:利用剪切技術,減少在repaint()中的工作量;倍增緩沖區,提高接收速度;同時利用圖形壓縮技術,縮短下載時間。來自JavaWorld的“Java Applets”以及來自Sun的“Performing Animation”是兩個很好的教程。請記著使用最貼切的命令。例如,為根據一系列點畫一個多邊形,和drawLine()相比,drawPolygon()的速度要快得多。如必須畫一條單像素粗細的直線,drawLine(x,y,x,y)的速度比fillRect(x,y,1,1)快。
■使用API類:盡量使用來自Java API的類,因為它們本身已針對機器的性能進行了優化。這是用Java難于達到的。比如在復制任意長度的一個數組時,arraryCopy()比使用循環的速度快得多。
■替換API類:有些時候,API類提供了比我們希望更多的功能,相應的執行時間也會增加。因此,可定做特別的版本,讓它做更少的事情,但可更快地運行。例如,假定一個應用程序需要一個容器來保存大量數組。為加快執行速度,可將原來的Vector(矢量)替換成更快的動態對象數組。
1. 其他建議
■將重復的常數計算移至關鍵循環之外——比如計算固定長度緩沖區的buffer.length。
■static final(靜態最終)常數有助于編譯器優化程序。
■實現固定長度的循環。
■使用javac的優化選項:-O。它通過內嵌static,final以及private方法,從而優化編譯過的代碼。注意類的長度可能會增加(只對JDK 1.1而言——更早的版本也許不能執行字節查證)。新型的“Just-in-time”編譯器會動態加速代碼。
■盡可能地將計數減至0——這使用了一個特殊的JVM字節碼。
文章來源于領測軟件測試網 http://www.kjueaiud.com/