8、androidコード最適化技術記録

5006 ワード

1、length、length()、sizeの最適化
例:
int array_one[] = {1,2,3,4,5,6,7,8,9,10};
int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100};
for(int i=0;i<array_one.length;i++)
{
      for(int k=0;k<array_two.length;k++)  
      {
            doSth();    
       }
}

上記のコードでは、システムは毎回のforサイクルに対して配列長の計算を行う必要があり、システムのオーバーヘッドは自然に増加し、私たちはこのようにすることができます.
 
int array_one[] = {1,2,3,4,5,6,7,8,9,10};
int array_two[] = {1,2,3,4,5,6,7,8,9,10,11..100};

int length_array_one = array_one.length;
int length_array_two= array_two.length;

for(int i=0;i<length_array_one;i++)
{
      for(int k=0;k<length_array_two;k++)  
      {
            doSth();    
       }
}

同様に,jsonArrayや他の配列を計算する際には,上記のように最適化することができる.
 
2、for、whileの最適化
 
int array[] = {1,2,3,4..100};
int length_array = array.length;

for(int i=0;i<length_array;i++)//      array     20   
{
    
     if(i == 20)    
    {
        doSth();  
      }
}

もしあなたがすでにループの中で、指定した業務を完成して、この時他の業務がなければ、forループを続けて、このように時間コストが増大して、私たちはこのように最適化することができます:
int array[] = {1,2,3,4..100};
int length_array = array.length;

for(int i=0;i<length_array;i++)//      array     20   
{
    
     if(i == 20)    
    {
        doSth();  
        break;  
      }
}

適当なタイミングでループから飛び出します.同様にwhileサイクルであればwhileのサイクル条件をfalseに調整して退去する
 
3、変数ライフサイクルの最適化
int array[] = {1,2,3,4..100};
int length_array = array.length;

for(int i=0;i<length_array;i++)
{
   String str[] = new string[1000];
   doSth(str);   //str        ,       
}

上記のコードを見ると、ループごとに新しい配列が作成され、システムの空間使用コストが増加します.
int array[] = {1,2,3,4..100};
int length_array = array.length;

String str[] = new string[1000];

for(int i=0;i<length_array;i++)
{
   doSth(str);   //str        ,       
}

このような調整は、1回新規作成するだけで、スペースコストを効果的に削減できます.
 
4、頻繁な操作データベース
タイマーは15秒おきに売り切れidリストを取得し、idによってデータベース内の対応する名前を見つけて操作する必要がある.私の前の方法は、名前を探すたびに、データベースを開いてインデックスを得ることです.
では、変更後:メニューを変更するたびにインデックスを覚えておくと、名前を取得するたびに、データベースの頻繁な開いたり閉じたりする必要がなくなります.