System.arraycopy()和Array.sort()比Java中的手动进程更快还是更慢?

时间:2013-04-07 14:17:37

标签: java system

我在我的代码中使用了这些,但我认为它们可能没有手动编码程序那么快。我搜索过并发现一些文章说System.arraycopy()实际上比手动复制数组更快。我不太确定这是否正确。

另外,与我们在代码中编写的内容相比,函数Array.sort()是快速的吗?

// I am merging the arrays here into a new integer array called newarray3 
    int[] newarray3= new int[input1.length + input2.length];
    System.arraycopy(input1, 0, newarray3, 0, input1.length);
    System.arraycopy(input2, 0, newarray3, input1.length, input2.length);

    //sorting the array.
    Arrays.sort(newarray3);

input1和input2是两个要合并然后排序的数组。我想知道这种编码是否会让我的程序变慢。或者它可能是别的东西。请帮忙。

2 个答案:

答案 0 :(得分:2)

System.arraycopy几乎可以在几乎所有情况下手动执行,因为它可以执行“批量”数据移动,而不是一次一元素。主要的例外是相对较小的数组,因为在arraycopy中进行初始处理,选择使用哪种算法是非常重要的。

重新排序,没有一种单一排序算法在所有条件下都是最佳的。

答案 1 :(得分:1)

arrayCopy()是一种本机方法,所以是的,可能比手工编写的纯Java实现更快。另一方面,sort()是纯java方法,但设计用于泛型排序 - 使用的特定算法取决于数组的数据类型,请查看this post以了解详细信息。

您可以通过改进对象之间的比较并专门针对特定数据类型的算法来使您自己的排序实现更快,实际上这是本书Java Performance Tuning中建议的方法。无论如何,在使用分析器进行比较之前,您无法确定。

相关问题