【发布时间】:2019-03-31 00:23:00
【问题描述】:
我在 Python 中实现了一个物理模拟(无论如何,大部分繁重的工作都是在数值库中完成的,因此性能足够好)。 现在项目已经增长了一点,我通过在模拟过程中不会改变的参数添加了额外的功能。随之而来的是让程序根据它们的值做一件事或另一件事的必要性,即相当多的 if-else 散布在代码周围。
我的问题很简单:Python 是否实现了某种形式的分支预测?我会显着降低性能还是解释器足够聪明,可以看到某些参数永远不会改变?在被调用一百万次的函数中拥有一个常量 if-else,是每次都会评估条件还是发生一些魔术?当没有简单的方法完全删除条件时,有没有办法给解释器一些提示并支持/模拟分支预测?
【问题讨论】:
-
"或者解释器是否足够聪明,可以看到某些参数永远不会改变?"不,每次都会检查。
-
我怀疑 python 解释器是否会从分支预测中受益匪浅。
-
如果这些参数永远不会改变,也许您可以在全局级别对其进行一次评估并将结果作为
bool传递给函数? -
您可以将
numba用于您的功能吗?没有更多细节,很难确定。