java编写提升性能的代码
1、ConcurrentHashMap是Java 5中支持高并發、高吞吐量的線程安全HashMap實現,既兼顧安全,又保證高并發,HashMap的升級版本,建議使用。
2、List中的三種循環方法:迭代循環、for-each循環、for循環,其中for循環效率最高,迭代循環其次,這下你應該知道選擇哪一個了吧。
3、使用二元操作替代if-else,代碼簡潔,如:
int number >= 20 ? 20 : (number > 1) ? Integer.highestOneBit((number - 1) << 1) : 1;4、慎用String.split()方法,效率極其低下,可以考慮indexOf()、substring()組合,效率高不止多少倍。
5、new ConcurrentHashMap<K,V>(int capacity),new ArrayList<K,V>(int capacity),如果事先知道多少元素,加個初始參數,減少集合內部的移位操作,提高性能。
6、最后不要用反射,太耗內存,而且效率也不高,如果非要使用,建議用開源commons-beanutils-1.7.0.jar包里面的PropertyUtils類。
7、數據庫表數據不經常修改的,用緩存機制,不需要每次都進行數據庫連接,節省時間,可以加定時刷新功能,來同步數據庫表數據。
8、如果要經常操作字符串,建議StringBuffer(線程安全)和StringBuilder(線程不安全)取代String。
9、盡量減少對象的創建,考慮使用單例模式,資源共享的情況下,避免由于資源操作時導致的性能或損耗等。如日志文件,應用配置,還有就是控制資源的情況下,方便資源之間的互相通信。如線程池等。
10、程序中使用到的資使用完之后要記得釋放。這最好在finally塊中去做。不管程序執行的結果如何,finally塊總是會執行的,以確保資源的正確關閉。
11、使用'system.arraycopy ()'代替通過來循環復制數組。
12、簡單的getter/setter方法應該被置成final,這會告訴編譯器,這個方法不會被重載,所以,可以變成”inlined” 。
13、如果只是查找單個字符的話,用charat()代替startswith() 。
14、使用移位操作來代替'a / b'操作 。
15、把try/catch塊放入循環體內,會極大的影響性能,如果編譯jit被關閉或者你所使用的是一個不帶jit的jvm,性能會將下降21%之多。
16、如果一個變量需要經常訪問,那么你就需要考慮這個變量的作用域了。static? local?還是實例變量?訪問靜態變量和實例變量將會比訪問局部變量多耗費2-3個時鐘周期。
17、在java+Oracle的應用系統開發中,java中內嵌的SQL語言應盡量使用大寫形式,以減少Oracle解析器的解析負擔。
19、過分的創建對象會消耗系統的大量內存,嚴重時,會導致內存泄漏,因此,保證過期的對象的及時回收具有重要意義。
JVM的GC并非十分智能,因此建議在對象使用完畢后,手動設置成null。
20、不要重復計算,特別是size()方法。
比如:
應修改為
for(int i=0,len=list.size();i<len;i++)21、采用在需要的時候才開始創建的策略
例如:
String str="abc";if(i==1){ list.add(str);}應修改為:
if(i==1){String str="abc"; list.add(str);}22、HaspMap的遍歷。
Map<String, String[]> paraMap = new HashMap<String, String[]>(); for( Entry<String, String[]> entry : paraMap.entrySet() ) {String appFieldDefId = entry.getKey();String[] values = entry.getValue(); }利用散列值取出相應的Entry做比較得到結果,取得entry的值之后直接取key和 value。
23、數據轉換成列表:Collections.addAll(aa, bb);
//aa:表示list<String>對象,bb表示數組對象
總結
以上是生活随笔為你收集整理的java编写提升性能的代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义尺寸纸张打印
- 下一篇: 图像的放大与缩小(2)——双线性插值放大