java - Arrays.fill() 性能

标签 java android

我有一个调谐器应用程序,并且在后台进行大量计算。 我注意到我在计算时经常进行垃圾收集。我已经替换:

float someBigArray = new float[bigNumber];

使用全局数组:

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

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

最佳答案

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

除了重新初始化之外,你还能做得更好吗?可能不会!

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

<小时/>

1 在某些涉及引用数组的情况下,对数组进行 GC 比让 GC 保留该数组更好。例如,对长期数组中的新空间对象的引用将导致新对象不会被收集在新空间集合中。

关于java - Arrays.fill() 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49188510/

相关文章:

java - 如何使用 Redline RPM Java 库创建 RPM 包?

java - Ebean/Play 的 OptimisticLockException

android - 如何在运行时在屏幕底部显示按钮?

安卓/ Gradle : Include few files from one flavor to another flavor?

android - 如何使用 FirebaseRecyclerViewAdapter 在扁平结构 Firebase 中导航

java - 如何从 java 程序运行 Linux 终端命令

java - 奇怪的日期格式转Java日期

android - 如果没有 Internet 连接,HttpURLConnection getResponseCode() 不会返回

android - 如何通过通知将 Android 现有 Activity 置于最前面

java - 当来自 JSP 时,如何理解 Angular 中的服务器/客户端数据传输?