【发布时间】:2015-05-26 01:10:05
【问题描述】:
某些函数使用分支预测系统,该系统允许对某些数据结构进行更快的计算,例如在包含 if 语句函数的循环中使用排序数据比处理数据要快,而数据未排序(有关分支预测的更多信息,请参阅以下精彩帖子:Why is it faster to process a sorted array than an unsorted array?)。
我的问题很简单:C、Python、MATLAB、R 等高级编程语言是否使用马尔可夫链预测来提高某些计算的速度?
我不是专家,我刚刚开始了解马尔可夫链,但在我看来,每个代码,主要是包含循环的代码,都有某种可用于加速计算的时间可预测随机事件。
示例是应用于包含 1 到 200 之间整数的矩阵的函数,其中 90% 的值小于 100,即 2 位。似乎基于具有 x 或 y 位整数的概率自动“预分配”一定数量的位可以提高性能。
这就是分支预测的工作原理吗?这是否扩展到任何计算?
【问题讨论】:
-
这种“排序数组更快”的宗教必须停止......这确实是一个很好的答案,但它被错误引用的次数是巨大的。底线很简单——一遍又一遍地重复相同的分支决策比让它随机跳转要好。由于条件大于,排序完成了这项工作。当你有一个可观察的模式而不是随机数据时,基于马尔可夫链的预测是另外一回事。
标签: python performance matlab markov-chains branch-prediction