关于if判断和分支预测器
  • 板块学术版
  • 楼主MiddleRed
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/2/4 17:48
  • 上次更新2023/10/28 09:42:24
查看原帖
关于if判断和分支预测器
276153
MiddleRed楼主2022/2/4 17:48

最近看到stackoverflow上有这么一个问题,为什么排序后的数组要比未排序数组运行快3倍以上(link) ,里边给出的回答是因为cpu的分支预测器在面对排序后的数组时,预测能更加准确点,相比未排序的数组可以减少预测错误带来的延时,提升了速度。那这种技巧放在oi是否有应用价值?
以及也有回答将if判断

if (data[c] >= 128)
    sum += data[c];

改写成了位运算

int t = (data[c] - 128) >> 31;
sum += ~t & data[c];

从而减少判断提升速度。这种技巧放在oi是否也有应用价值?
还是说是我火星了

2022/2/4 17:48
加载中...