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

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

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

  public static void spaceToTime(int[] array) {

  int i = ;

  int max = array[];

  int l = arraylength;

  for (i = ; i < l; i++)

  if (array[i] > max)                 //找出最大值

  max = array[i];

  int[] temp = new int[max + ];          //分配臨時空間

  for (i = ; i < l; i++)

  temp[array[i]] = array[i];          //以索引下標來標識數字大小

  int j = ;

  int maxmax = max + ;

  for (i = ; i < max; i++) {            //線性復雜度

  if (temp[i] > ) {

  array[j++] = temp[i];

  }

  }

  }

  }

  上例中函數spaceToTime()實現了數組的排序它不計空間成本以數組的索引下標來表示數據大小因此避免了數字間的相互比較這是一種典型的空間換時間的思路

  在本例中萬數據進行排序(使用JVM參數XmxM XmsM運行程序)在筆者的計算機上輸出顯示

  Arrayssort spend: ms

  spaceToTime spend: ms

  可以看到在本例中spaceToTime()的速度優於JDK自帶的數組排序方法但是這裡需要指出的是這並不表示對任何規模段的數組排序spaceToTime()都優於Arrayssort()如果數組中元素不多或者當前CPU的運算能力很強那麼Arrayssort()方法的執行速度並不會比spaceToTime()慢而相對地如果CPU運算能力較弱那麼這種以空間換取計算資源的方法會取得相對較好的效果

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

  編輯推薦

       Java程序設計培訓視頻教程

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

       JME移動開發實戰教學視頻

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

  Oracle索引技術

  ORACLEG數據庫開發優化指南

[]  []  


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