8、androidコード最適化技術記録
5006 ワード
1、length、length()、sizeの最適化
例:
上記のコードでは、システムは毎回のforサイクルに対して配列長の計算を行う必要があり、システムのオーバーヘッドは自然に増加し、私たちはこのようにすることができます.
同様に,jsonArrayや他の配列を計算する際には,上記のように最適化することができる.
2、for、whileの最適化
もしあなたがすでにループの中で、指定した業務を完成して、この時他の業務がなければ、forループを続けて、このように時間コストが増大して、私たちはこのように最適化することができます:
適当なタイミングでループから飛び出します.同様にwhileサイクルであればwhileのサイクル条件をfalseに調整して退去する
3、変数ライフサイクルの最適化
上記のコードを見ると、ループごとに新しい配列が作成され、システムの空間使用コストが増加します.
このような調整は、1回新規作成するだけで、スペースコストを効果的に削減できます.
4、頻繁な操作データベース
タイマーは15秒おきに売り切れidリストを取得し、idによってデータベース内の対応する名前を見つけて操作する必要がある.私の前の方法は、名前を探すたびに、データベースを開いてインデックスを得ることです.
では、変更後:メニューを変更するたびにインデックスを覚えておくと、名前を取得するたびに、データベースの頻繁な開いたり閉じたりする必要がなくなります.
例:
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によってデータベース内の対応する名前を見つけて操作する必要がある.私の前の方法は、名前を探すたびに、データベースを開いてインデックスを得ることです.
では、変更後:メニューを変更するたびにインデックスを覚えておくと、名前を取得するたびに、データベースの頻繁な開いたり閉じたりする必要がなくなります.