Java中整数数组中哪个操作交换或比较开销更大?还是可以将它们全部视为相同?
上下文:对几乎排序的数组进行排序(我不是在说k排序的数组,其中每个元素从正确的位置最多移位k).即使我们使用插入排序,到最后的比较次数也将与任何数组或最坏情况下的比较次数相同.是不是只是交换次数会减少.如果我错了,请更正.
解决方法:
交换应该更昂贵,因为它包括:
>从内存读取数据到缓存
>从缓存读取数据到寄存器
>将数据写回缓存
比较应该便宜一些,因为它包括:
>从内存读取数据到缓存
>从缓存读取数据到寄存器
>在两个寄存器上执行单个比较操作(应该比将两个整数写入高速缓存要快一点)
但是现代处理器非常复杂且彼此不同,因此,获得正确答案的最佳方法是对代码进行基准测试.