有什么技术可以"cache"一个分支选择的结果吗?

Is there any technology to "cache" the result of a branch choice?

在我的代码中有一个正则:如果if语句为真,它会保持一段时间为真,如果变为假,它会保持一段时间为假。由于这段代码的性能很重要,我想让分支预测更有效率。

目前我尝试的是写这个if语句的两个版本,一个用“likely”优化,另一个用“unlikely”优化,并使用函数指针来保存使用哪个,但由于函数指针也破坏了管道,基准测试似乎与正常的 if 语句没有什么不同。所以我很好奇有没有什么技术可以让CPU“记住”这个if语句的最后一个选择?

或者,我真的需要关心这个吗?

如果它在一段时间内保持不变,分支预测器会很快解决这个问题。这就是为什么 sorting an input sometimes makes code run significantly faster;随机未排序的数据不断来回改变测试结果,没有分支预测器可以使用的模式,但是对于排序的数据,它有很长的运行时间,分支总是被采用或总是不被采用,这是 最简单的 分支预测器要处理的情况。

不要想太多;让分支预测器完成它的工作。你不用管它。