天天看點

【java performance】盡可能的使用棧變量

如果一個變量需要經常通路,那麼你就需要考慮這個變量的作用域了。static? local?還是執行個體變量?通路靜态變量和執行個體變量将會比通路局部變量多耗費2-3個時鐘周期。

例子:

public class USV {
   void getSum (int[] values) {
       for (int i=0; i < value.length; i++) {
           _sum += value[i];           //violation.
       }
    }
   void getSum2 (int[] values) {
       for (int i=0; i < value.length; i++) {
           _staticSum += value[i];
       }
    }
   private int _sum;
   private static int _staticSum;
}      

更正:        

如果可能,請使用局部變量作為你經常通路的變量。

你可以按下面的方法來修改getSum()方法:        

void getSum (int[] values) {
   int sum = _sum;  // temporarylocal variable.
   for (int i=0; i < value.length; i++) {
       sum += value[i];
    }
   _sum = sum;
}      
Peter Haggar: "Practical Java -Programming Language Guide".
Addison Wesley, 2000, pp.122 – 125