Arrays.fill()性能

时间:2018-03-09 07:20:32

标签: java android

我有一个调谐器应用程序,我在后台有大量的计算。 我注意到我在计算时经常有垃圾收集。我已经取代了:

float someBigArray = new float[bigNumber];

使用全局数组:

 if (someBigArray == null) {
        someBigArray = new float[bigNumber];
    } else {
        Arrays.fill(someBigArray , 0f);
    }

在计算FFT时使用此数组,这称为每秒多次。 我已经摆脱了频繁的垃圾收集,但我不确定它是更有效的解决方案。也许有更好的主意。

1 个答案:

答案 0 :(得分:0)

(可能 1 )比回收数组(并重新初始化)要快于分配新数组。

你能做得比重新初始化好吗?可能不是!

但是,如果每次只使用大数组的一小部分,那么重新初始化整个数组可能会浪费。 (可能值得记录每次使用的阵列数量。)

1在某些情况下涉及引用数组,GC对阵列的优化程度要高于GC的终结时间。例如,对tenured数组中的新空间对象的引用将导致新对象无法在新空间集合中收集。