开发者社区> 问答> 正文

[@talishboy][¥20]之前看过孤尽的码出效率 还是有一些问题不是很明白,比如为什么排序后的数组要比未排序的数据运行速率要快很多,甚至能达到三倍以上

问题来自Java技术沙龙的石锋
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

展开
收起
李博 bluemind 2018-12-07 15:15:13 1546 0
1 条回答
写回答
取消 提交回答
  • 孔祥坤 职位:阿里妈妈应用平台技术专家 擅长问题:分布式应用系统架构、Java核心技术以及开源framework等 经历:10年左右Java应用系统研发及架构设计经验,曾主导和参与多个重要广告应用系统的研发设计,目前在阿里妈妈从事广告投放中台的研发工作。

    排序后的数组比为未排序的数组运行速率快,其实不是很确定这个“运行"具体指的什么类型的计算。尝试着回答下,如果对一组数据进行循环处理,每次循环都需要对当前游标对应的数值进行值判断,这个确实会发生,这个涉及到计算机指令流水线的工作原理,一条指令的执行都需要经过多个硬件的处理的阶段,比如取址、分析译码、执行等。为了提高指令执行效率,减少硬件资源闲置,多个指令可以叠加执行的,只要是处于不同的硬件阶段就可以,比如指令A执行到分析译码阶段,指令B可以执行取址,在这个过程中很多指令步骤是提前进行预测,如果排序好的数据预测命中的概率会大很多(比如指令是跟一个固定值的比较),而不规律的数据预测失手的概率会大很多,需要重新恢复。这个问题基本上跟java语言无关,跟机器指令运行方式有关。

    2019-07-17 23:18:54
    赞同 1 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据带来无限可能 立即下载
数据+算法定义新世界 立即下载
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载