克隆一个int [] - 有人得到了更快的建议吗?

bma*_*ies 4 java arrays performance

我正盯着一个配置文件,其中一个CPU热点是一个包含克隆最终静态int []的函数.你可能会问,'为什么?' 调用者使用结果作为散列过程的起点.

换句话说,代码需要(逻辑上):

  1. 制作一个新阵列
  2. 获取哈希种子(与数组的大小一样多)
  3. 将值放在从散列种子计算的新数组中.这是一个迭代算法,所以让种子从数组开始是有利的 - 因此从种子数组的克隆开始的想法.

在我放弃或开始使用微基准测试之前,我发布这个问题,以防任何人对于使用clone()与Arrays.copyOf而不仅仅是new和arraycopy有什么特别的了解.

Jér*_*nge 5

Arrays.copyOf利用记忆,如引擎盖下的说明.此外,索引越界检查越少.如果您逐个指定值,则每次都会进行"绑定"检查.

我还没有对每个建议的选项进行基准测试,但我相信它Arrays.copyOf()会比这更快new int[] + for(...).

另一方面,由于克隆发生在原始类型数组上,因此我不确定它Arrays.copyOf()是否会更有效int[] myCopy = myOrig.clone().编译器很有可能生成优化的字节码.只有测试才能提供明确的答案.