私は Android 開発者であり、Java は初めてではありませんが、パフォーマンスのベスト プラクティスについていくつか質問があります。あなたが決めることができるように、私のコードからいくつかの例を挙げます。
文字列連結
url = "http://www.myserver." + domain + "/rss.php?"
+ rawType + rawCathegory + rawSubCathegory + rawLocality
+ rawRadius + rawKeyword + rawPriceFrom + rawPriceto;
私の知る限り、これは url 変数が作成される前に 11 個の文字列オブジェクトを作成しますよね?
私は StringBuilder を使用するように教えられましたが、私の質問は、それを効率的にするために連結する文字列の最小量は何ですか? 2つの文字列を連結して使用するのはあまり意味がないと思いますよね?
ローカル変数
時々私はそのようにメソッド呼び出しを「連鎖」しようとします
FilterData.getInstance(context).getFilter(position).setActivated(isActivated);
単純に変数の割り当てを回避する必要がありますが、これよりも高速ですか?
FilterData filterData = FilterData.getInstance(context);
Filter filter = filterData.getFilter(position);
filter.setActivated(isActivated);
自分でローカル変数を保存する必要があると思いますが、メソッド名が長い場合などは読めなくなります。
ループ
http://developer.android.com/training/articles/perf-tips.htmlによると、強化された for ループは通常の for ループよりも 3 倍高速であり、それはそれで素晴らしく、とにかく書きやすいですが、索引?私の知る限り、強化された for ループでは、このように自分で追跡する必要があります
int index = 0;
for(Object obj : objects) {
// do stuff
index++;
}
これは通常のループよりも高速ですか?
for(int i = 0; i < objects.size(); i++) {
// do stuff
}
拡張された for ループはおそらくその制限について最適化を行うと思うので、おそらく size() がこれに最適化された場合
int size = objects.size();
for(int i = 0; i < size; i++) {
// do stuff
}
それはどのように立つでしょうか?
ありがとう、私はこれがつまらないものであり、それほど大きな違いをもたらさないことを知っていますが、むしろそのような一般的なタスクを正しい方法で学びます.