问题来自Java技术沙龙的石锋
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796
排序后的数组比为未排序的数组运行速率快,其实不是很确定这个“运行"具体指的什么类型的计算。尝试着回答下,如果对一组数据进行循环处理,每次循环都需要对当前游标对应的数值进行值判断,这个确实会发生,这个涉及到计算机指令流水线的工作原理,一条指令的执行都需要经过多个硬件的处理的阶段,比如取址、分析译码、执行等。为了提高指令执行效率,减少硬件资源闲置,多个指令可以叠加执行的,只要是处于不同的硬件阶段就可以,比如指令A执行到分析译码阶段,指令B可以执行取址,在这个过程中很多指令步骤是提前进行预测,如果排序好的数据预测命中的概率会大很多(比如指令是跟一个固定值的比较),而不规律的数据预测失手的概率会大很多,需要重新恢复。这个问题基本上跟java语言无关,跟机器指令运行方式有关。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。