【发布时间】:2017-04-18 19:27:42
【问题描述】:
我有一个关于在 python 中计算速度更快的问题。 这是一个大型模拟,所以任何节省时间的小事都会有所帮助。
据我了解,当 python 评估带有“或”的“if”语句时,如果第一个条件为真,它不会打扰第二个条件。
这里我想检查一个随机生成的介于 0 和 1 之间的浮点数是否小于某个指数因子。
if random() < exp(a-b):
do_things()
那么在这种情况下,当第二个条件暗示第一个条件时,是否值得做逻辑上冗余的“if”语句,但第一个条件可能计算得更快?
if a > b or random() < exp(a-b):
do_things()
这是否会更快,甚至更重要?任何意见表示赞赏,谢谢!
【问题讨论】:
-
您可以基于此方法用简短的示例测试执行时间:stackoverflow.com/questions/1557571/…
-
为什么不计时,自己看看呢? IPython 有
%timeit魔法命令,Python 有timeit可以使用:docs.python.org/3/library/timeit.html。 -
而不是张贴...你为什么不直接测量? (docs.python.org/2/library/timeit.html)
-
“这是一个大型模拟,所以任何节省时间的小事都会有所帮助。”也许是时候考虑在这部分代码中不使用 Python 了? Python 是一门很棒的语言,但如果性能是您的瓶颈,您可能需要将计算方法更改为其他方法。
-
如果您正在尝试优化一段较大的代码,请确保您首先进行概要分析,以确保您将精力集中在那些重要的领域。
标签: python performance if-statement performance-testing execution-time