2017-04-01 5 views
0
public void zero() { 
    int sum = 0; 
    for (int i = 0; i < mArray.length; ++i) { 
     sum += mArray[i].mSplat; 
    } 
} 

public void one() { 
    int sum = 0; 
    Foo[] localArray = mArray; 
    int len = localArray.length; 

    for (int i = 0; i < len; ++i) { 
     sum += localArray[i].mSplat; 
    } 
} 

public void two() { 
    int sum = 0; 
    for (Foo a : mArray) { 
     sum += a.mSplat; 
    } 
} 

引用符https://developer.android.com/training/articles/perf-tips.html#Loopsより良いパフォーマンスを達成するには、 'for each loop syntax'を使用することをおすすめします。しかし、一方では、JITを使用するデバイスではゼロ()または2()を使用するのに対して、ゼロ()は最も遅いデバイスを使用しても差異は生じません。LibgdxのArrayデータ型で最も高速なループ構文はどれですか?

Iveは、ループごとにaがゴミを作成する可能性があるため、two()ではone()を使用することはお勧めしません。

LibGDXの配列データ型のすべての要素を何回反復するのが最適かを知りたい。 https://github.com/libgdx/libgdx/wiki/Collections https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/Array.html

私はまだ混乱している

答えて

1

two()は私の意見では、より良い選択肢である:ここでは

はいくつかの記事です。

Libgdxの配列は、可能な限りガベージコレクションを避けるように最適化されています。彼らは多くの点でこれをしています。

  1. 可能であれば、メモリコピーを避けることで、既に指摘している方法の1つです。

  2. イテレータの再利用。

  3. IntArrayを使用すると、ArrayListで発生するボクシングが回避されます。

関連する問題