python – 为什么三元运算符比.ts更快?
发布时间:2020-12-16 22:28:55 所属栏目:Python 来源:网络整理
导读:我最近发现了令人惊讶的事情.给定一个不包含密钥k的dict d,使用三元运算符尝试检索具有默认返回的项目: def tern():... d[k] if k in d else 'foo'... timeit.timeit(tern,number=1000000)0.12342095375061035 运行速度比dict的.get()函数快: def get_meth
我最近发现了令人惊讶的事情.给定一个不包含密钥k的dict d,使用三元运算符尝试检索具有默认返回的项目:
运行速度比dict的.get()函数快:
这对我来说似乎是违反直觉的.我认为三元运算符需要通过dict进行2次搜索(一次在d中测试k),然后另一次搜索d [k],而.get只是尝试检索d [k],如果失败,返回’foo’. 我在一个大字典(一百万个元素)和一个小字母(100)上运行它,两次都是三元组明显更快.幕后发生了什么事? 最佳答案
如果你反汇编这两个方法,你会发现get有一个额外的CALL_FUNCTION,与POP_JUMP_IF_FALSE指令相比,它在python中很昂贵.
如果在
获取方法:
我刚才读过一篇很长的文章,其中有一节描述了为什么CALL_FUNCTION如此昂贵: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |