讓Java代碼跑得更快

來源:互聯網
上載者:User

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

1,將一些系統資源放在池中,如資料庫連接,線程等.在standalone的應用中,資料庫連接池可以使用一些開源的串連池實現,如C3P0,proxool和DBCP等,在運行在容器中的應用這可以使用伺服器提供的DataSource.線程池可以使用JDK本身就提供的java.util.concurrent.ExecutorService.

import java.util.concurrent.Executors;  import java.util.concurrent.ExecutorService;  public class JavaThreadPool {      public static void main(String[] args) {      ExecutorService pool = Executors.newFixedThreadPool(2);            Thread t1 = new MyThread();      Thread t2 = new MyThread();      Thread t3 = new MyThread();      Thread t4 = new MyThread();      Thread t5 = new MyThread();       pool.execute(t1);      pool.execute(t2);      pool.execute(t3);      pool.execute(t4);       pool.shutdown();      }  }   class MyThread extends Thread {      public void run() {      System.out.println(Thread.currentThread().getName() + "running....");      }  } 

2,減少網路開銷,在和資料庫或者遠程服務互動的時候,盡量將多次調用合并到一次調用中。

3,將經常訪問的外部資源cache到記憶體中,簡單的可以使用static的hashmap在應用啟動的時候載入,也可以使用一些開源的cache架構,如OSCache和Ehcache等.和資源的同步可以考慮定期輪詢和外部資源更新時候主動通知.或者在自己寫的代碼中留出介面(命令方式或者介面方式)共手動同步。

4,最佳化IO操作,JAVA操作檔案的時候分InputStream and OutputStream,Reader and Writer兩類,stream的方式要快,後者主要是為了操作字元而用的,在字元僅僅是ASCII的時候可以用stream的方式提高效率.JDK1.4之後的nio比io的效率更好。

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

利用BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter減少對磁碟的直接存取次數。

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

5不要頻繁的new對象,對於在整個應用中只需要存在一個執行個體的類使用單例模式.對於String的串連操作,使用StringBuffer或者StringBuilder.對於utility類型的類通過靜態方法來訪問。

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

7,對效能的考慮要在系統分析和設計之初就要考慮。

總之,一個系統運行時的效能,無非是從CPU,Memory和IO這三個主要方面來考慮最佳化.減少不必要的CPU消耗,減少不必要的IO操作,增加Memory利用效率。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.