Java中整数数组中的操作交换或比较比较昂贵

Java中整数数组中哪个操作交换或比较开销更大?还是可以将它们全部视为相同?

上下文:对几乎排序的数组进行排序(我不是在说k排序的数组,其中每个元素从正确的位置最多移位k).即使我们使用插入排序,到最后的比较次数也将与任何数组或最坏情况下的比较次数相同.是不是只是交换次数会减少.如果我错了,请更正.

解决方法:

交换应该更昂贵,因为它包括:

>从内存读取数据到缓存
>从缓存读取数据到寄存器
>将数据写回缓存

比较应该便宜一些,因为它包括:

>从内存读取数据到缓存
>从缓存读取数据到寄存器
>在两个寄存器上执行单个比较操作(应该比将两个整数写入高速缓存要快一点)

但是现代处理器非常复杂且彼此不同,因此,获得正确答案的最佳方法是对代码进行基准测试.

上一篇:javascript-从已经定义的函数创建一个闭包?


下一篇:java-对通用接口列表进行排序