gpt4 book ai didi

python - 优化Python中常量的冗余逻辑测试

转载 作者:行者123 更新时间:2023-11-30 23:38:08 25 4
gpt4 key购买 nike

假设我有一个主函数,它执行 bool 逻辑测试来决定运行 2 个子函数(函数 A 或函数 B)中的一个。主函数循环了 10 亿次,但逻辑测试的值是常量(由用户在程序启动时输入)。

我看到有两种可能的写法:1)将逻辑测试埋在函数A中。至少理论上,逻辑测试必须执行10亿次,这听起来效率不高。2)在main函数之前进行逻辑测试。将主函数拆分为主函数 1 和主函数 2(除了运行哪个子函数之外,它们是相同的),并使用逻辑测试来决定运行哪个主函数。这里,逻辑测试只执行一次,但这种实现会产生冗余代码。

实现 1) 和 2) 之间的计算效率有什么区别吗?换句话说,Python 是否做了任何自动优化以使这两种实现在机器代码级别等效?

最佳答案

虽然 @mmgp 在这两方面都是正确的——CPython 没有做任何这样的优化,而且这不太可能成为 Python 擅长的代码类型的瓶颈——但还有第三种选择。您可以传递您想要使用的函数作为参数:

>>> def g1():
... print 'g1'
...
>>> def g2():
... print 'g2'
...
>>> def subfunc(fn):
... fn()
...
>>> def caller(a):
... f = g1 if a else g2
... for i in range(2):
... subfunc(f)
...
>>> caller(True)
g1
g1
>>> caller(False)
g2
g2

您的子函数可以保持完全相同,并且您已将测试提升到循环之外。

关于python - 优化Python中常量的冗余逻辑测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14844112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com