熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

Java程序性能優化-時間換空間

2013-11-23 19:59:49  來源: Java高級技術 

    時間換空間

  由於系統資源是有限的為了在有限的資源內達成某些特定的性能目標就需要使用時間換空間或者空間換時間的方法

  時間換空間通常用於嵌入式設備或者內存硬盤空間不足的情況通過使用犧牲CPU的方式獲得原本需要更多內存或者硬盤空間才能完成的工作

  下例是一個非常簡單的時間換空間的算法實現了ab兩個變量的值交換交換兩個變量最常用的方法是使用一個中間變量而引入額外的變量意味著要使用更多的空間采用下面的方法則可以免去中間變量而達到變量交換的目的其代價則是引入了更多的CPU運算

  aa=a+b;

  b=ab;

  aa=ab;

  另一個較為有用的例子是對無符號整數的支持在Java語言中不支持無符號整數這意味著當需要無符號的byte時需要使用short代替這也意味著空間的浪費下例使用位運算模擬無符號byte雖然在取值和設值過程中需要更多的CPU運算但是卻可以大大降低對內存空間的需求

  public class UnsignedByte {

  public short getValue(byte i) {     //將byte轉為無符號的數字

  short li = (short) (i & xff)

  return li;

  }

  public byte toUnsignedByte(short i) {   //將short轉為無符號byte

  return (byte) (i & xff)

  }

  public static void main(String args[]) {

  UnsignedByte ins = new UnsignedByte()

  short[] shorts=new short[];      //聲明一個short數組

  for(int i=;i<shortslength;i++)    //數值不能超過無符號byte的上限

  shorts[i]=(short)i;

  byte[] bytes=new byte[];         //使用byte數組替代short數組

  for(int i=;i<byteslength;i++)

  bytes[i]=instoUnsignedByte(shorts[i])

  //short數組的數據存到byte數組中

  for(int i=;i<byteslength;i++)

  Systemoutprint(insgetValue(bytes[i])+

  //從byte數組中取出無符號的byte

  }

  }

  注意性能優化的關鍵在於掌握各部分組件的性能平衡點如果系統CPU資源有空閒但是內存使用緊張便可以考慮使用時間換空間的策略達到整體性能的改良反之CPU資源緊張內存資源有空閒則可以使用空間換時間的策略提升整體性能

       返回目錄Java程序性能優化讓你的Java程序更快更穩定

  編輯推薦

       Java程序設計培訓視頻教程

       JEE高級框架實戰培訓視頻教程

       JME移動開發實戰教學視頻

  Visual C++音頻/視頻技術開發與實戰

  Oracle索引技術

  ORACLEG數據庫開發優化指南


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27788.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.