python - python中哪种方式更好更快?
问题描述
python中哪种方式更快?
if status=='Failed' or status=='Terminated' or status=='Aborted' or status=='Expired':
break
或者
if status in ['Failed', 'Terminated', 'Aborted', 'Expired']:
break
解决方案
如果您倾向于在第一个/第二个条目中进行比较失败,则第二个会稍微快一些。这很可能是因为它CONTAINS_OP
是一个单一的字节码操作,并且进入了用于迭代列表的大部分本地代码。第一个解决方案是检查纯 python 中的每个比较,这有一些不必要的开销。
但是差异是微不足道的,每次在我的系统上进行整个检查的总时间通常约为 0.3 μs,因此在实践中它不应该重要,或者代码不应该首先使用 Python。
你应该自己测试这样的问题。您可以在时间检查中包装您的代码:
def first(rep):
status='foobar'
for x in range(rep):
if status=='Failed' or status=='Terminated' or status=='Aborted' or status=='Expired':
pass
rep = 1000000
start = time.perf_counter()
first(rep)
diff1 = time.perf_counter()-start
并比较结果。
推荐阅读
- .net-6.0 - .NET 6 中不推荐使用 ReflectionOnlyLoad
- graphql - 尝试检查 Shopify Payments 是否已激活时访问被拒绝
- node.js - 由于@nestjs/config 中的 ts 错误,嵌套构建失败
- c - 如果我在 C 中使用 printf 和 scanf 设置条件语句,会有问题吗?
- python - 我怎样才能使这个 for 循环更有效和更快
- javascript - 我正在制作一个基于网络的游戏,但问题是每一轮都会发生同样的事情
- google-cloud-vision - 导出模型的标签和置信度
- javascript - 如何在 Express 的结果后重定向 React 页面?
- python - InvalidBSON 错误 - pymongo 中的第 0 年超出范围
- javascript - th 中的 javascript 代码有困难,部分是按钮颜色更改