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它建议对每个循环语法使用&#39;&#39;实现更好的性能。但另一方面,文章说,对于使用JIT的设备使用零()或两()而没有任何区别,而零()是最慢的。
我还发现文章不推荐使用两个()而是一个(),因为每个循环可能会产生垃圾。
我想知道从LibGDX迭代Array数据类型的所有元素的最佳方法。
以下是一些文章: https://github.com/libgdx/libgdx/wiki/Collections https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/Array.html
我仍然感到困惑
答案 0 :(得分:1)
two()
是更好的选择。
优化了Libgdx数组,以尽可能避免垃圾回收。他们以多种方式做到这一点。
一种方法是你已经指出的方法,尽可能避免使用内存副本。
重用迭代器。
使用IntArray,避免使用ArrayList进行装箱。