首页 > 解决方案 > python中哪种方式更好更快?

问题描述

python中哪种方式更快?

if status=='Failed' or status=='Terminated' or status=='Aborted' or status=='Expired':
   break

或者

if status in ['Failed', 'Terminated', 'Aborted', 'Expired']:
   break

标签: pythonlistif-statement

解决方案


如果您倾向于在第一个/第二个条目中进行比较失败,则第二个会稍微快一些。这很可能是因为它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

并比较结果。


推荐阅读