2015年12月2日 星期三

[雜談]程式效能(二)

之前看到某個系統把陣列轉成字串的功能
臨時想到了關於功能的效能問題
所以就稍微記了一下
他大概的程式碼如下

 public String arrayToString(String[] input){

  StringBuffer result = new StringBuffer();

  if(input!=null){

   boolean isFirstElement = true;

   for(int i = 0; i<input.length; i++){

    if(isFirstElement){

     result.append(input[i]);     

    } else {

     result.append(", ");

     result.append(input[i]);

    }    

   }   

  }      

  return result.toString();

 }





這段大概的意思是將一個陣列轉成字串
第一個字以後都要用", "分開,所以需要用isFirstElement來判斷是不是第一筆資料
可是我覺得這個寫法除了多了一個暫存值以外
每個迴圈都要判斷一次是不是第一個感覺效能不是很好
於是我就思考如何把那個if去掉
後來想到的方法如下


 public String arrayToString(String[] input){

  StringBuffer result = new StringBuffer();

  if(input!=null && input.length>0){

   result.append(input[0]);

   

   for(int i = 1; i<input.length; i++){

    result.append(", ");

    result.append(input[i]);
       

   }  

  }      

  return result.toString();

 }




把for迴圈的i=0,  i<input.length(這句相當於input.length>0)拿掉
將這判斷式移到input!=null的後面
這樣除了把isFirstElement移掉以外
也不會多做if判斷,執行時間跟記憶體空間都能節省到
可讀性的問題也可以用,提供給大家參考!

沒有留言:

張貼留言