IT神童

          java,net,php技術(shù)研究神童

          讓Java代碼跑得更快

          本文簡單介紹一下在寫代碼過程中用到的一些讓JAVA代碼更高效的技巧。

          1,將一些系統(tǒng)資源放在池中,如數(shù)據(jù)庫連接,線程等.在standalone的應(yīng)用中,數(shù)據(jù)庫連接池可以使用一些開源的連接池實(shí)現(xiàn),如C3P0,proxool和DBCP等,在運(yùn)行在容器中的應(yīng)用這可以使用服務(wù)器提供的DataSource.線程池可以使用JDK本身就提供的java.util.concurrent.ExecutorService.

          1. import java.util.concurrent.Executors;  
          2. import java.util.concurrent.ExecutorService;  
          3. public class JavaThreadPool {  
          4.     public static void main(String[] args) {  
          5.     ExecutorService pool = Executors.newFixedThreadPool(2);  
          6.       
          7.     Thread t1 = new MyThread();  
          8.     Thread t2 = new MyThread();  
          9.     Thread t3 = new MyThread();  
          10.     Thread t4 = new MyThread();  
          11.     Thread t5 = new MyThread();  
          12.  
          13.     pool.execute(t1);  
          14.     pool.execute(t2);  
          15.     pool.execute(t3);  
          16.     pool.execute(t4);  
          17.  
          18.     pool.shutdown();  
          19.     }  
          20. }  
          21.  
          22. class MyThread extends Thread {  
          23.     public void run() {  
          24.     System.out.println(Thread.currentThread().getName() + "running....");  
          25.     }  
          26. }  

          2,減少網(wǎng)絡(luò)開銷,在和數(shù)據(jù)庫或者遠(yuǎn)程服務(wù)交互的時候,盡量將多次調(diào)用合并到一次調(diào)用中。

          3,將經(jīng)常訪問的外部資源cache到內(nèi)存中,簡單的可以使用static的hashmap在應(yīng)用啟動的時候加載,也可以使用一些開源的cache框架,如OSCache和Ehcache等.和資源的同步可以考慮定期輪詢和外部資源更新時候主動通知.或者在自己寫的代碼中留出接口(命令方式或者界面方式)共手動同步。

          4,優(yōu)化IO操作,JAVA操作文件的時候分InputStream and OutputStream,Reader and Writer兩類,stream的方式要快,后者主要是為了操作字符而用的,在字符僅僅是ASCII的時候可以用stream的方式提高效率.JDK1.4之后的nio比io的效率更好。java教程下載

          1. OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("d:/temp/test.txt")));              
          2. out.write("abcde".getBytes());        
          3. out.flush();  
          4. out.close(); 

          利用BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter減少對磁盤的直接訪問次數(shù)。

          1. FileReader fr = new FileReader(f);  
          2. BufferedReader br = new BufferedReader(fr);  
          3. while (br.readLine() != null) count++; 

          5不要頻繁的new對象,對于在整個應(yīng)用中只需要存在一個實(shí)例的類使用單例模式.對于String的連接操作,使用StringBuffer或者StringBuilder.對于utility類型的類通過靜態(tài)方法來訪問。

          6,避免使用錯誤的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace消耗性能,除非必要不要使用instanceof做條件判斷,盡量使用比的條件判斷方式.使用JAVA中效率高的類,比如ArrayList比Vector性能好。

          7,對性能的考慮要在系統(tǒng)分析和設(shè)計(jì)之初就要考慮。

          總之,一個系統(tǒng)運(yùn)行時的性能,無非是從CPU,Memory和IO這三個主要方面來考慮優(yōu)化.減少不必要的CPU消耗,減少不必要的IO操作,增加Memory利用效率。

          posted on 2012-08-23 14:42 IT神童 閱讀(549) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2012年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 孟连| 台江县| 长泰县| 准格尔旗| 勃利县| 花莲县| 翼城县| 永州市| 岱山县| 汤阴县| 眉山市| 贵阳市| 察哈| 乌拉特中旗| 长岛县| 泰安市| 雷州市| 昭觉县| 韩城市| 博白县| 远安县| 星子县| 三河市| 皮山县| 宁都县| 高碑店市| 莎车县| 古丈县| 阜城县| 汝南县| 富裕县| 博罗县| 灯塔市| 邓州市| 比如县| 汽车| 图们市| 葵青区| 明星| 阜康市| 永清县|