这期内容当中小编将会给大家带来有关计算机编程语言字典查找性能的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
timeit.repeat
时间。重复默认会执行3轮,每轮执行1000000次。返回每轮的总执行时间列表
字典获取性能
大家都知道字典获取分为
中括号获取,获取不到会抛出密钥错误
得到获取,获取不到会返回默认值
下面比较两种获取方式的性能
数据准备
一条简单一条复杂
#日志记录标准库的水平字典
level _ mapping={ ' CRITICAL ' :50,' FATAL':50,' ERROR':40,' WARN':30,' WARNING':30,' INFO':20,' DEBUG':10,' NOTSET':0}
#弹性搜索日志
记录={ ' _ index ' : ' log stash-project。测试-环境。发布-用户。root-2021 ',' _type':'doc ',' _id':'2f60jn0BaH-cdSPUSkiF ',' _version':1 ',_score':None ',_ source ' : { ' method ' : ' GET ',' index _ name ' : ' project.test .a=11b=22'},' field ' : { ' @ timestamp ' :[' 2021-12-06t 07:45336020.056z ']},' sort ' :[1638776720056]} defest():
level_mapping['CRITICAL']
timeit.repeat(lambda:test())
[0.08700739999994767,0.0864886999997907,0.08675769999990735]
#中括号加尝试除外
defest 1(:)
尝试:
level_mapping['CRITICA']
除外:
及格
timeit.repeat(lambda:test1())
[0.0916477999991879,0.092180999999999823,0.0907655000009999814]# key存在
[0.17694680000022345,0.1759290999998484,0.17659199916584]# key不存在
defest 2(:)
level_mapping.get('CRITICAL ')
timeit.repeat(lambda:test2())
[0.131671400000414,0.12985489999982747,0.13035420000005615]中括号获取比得到方式快了50%左右;
但当使用中括号加尝试除了,关键不存在时要慢近一倍;
使用得到时键存不存在设不设默认值都一样。
复杂获取
defest 3(:)
级别_映射[记录['_source']['level']]
timeit.repeat(lambda:test3())
[0.1141027999999551,0.11351319999994303,0.11431539999989582]
defest 4(:)
级别_映射。获取(记录。获取(' _ source ').获取(“级别”)
timeit.repeat(lambda:test4())
[0.22142400000007,0.21937850000017534,0.21913369999992938]随着数据的复杂嵌套和链式操作,这次快了整整一倍。
上述就是小编为大家分享的计算机编程语言字典查找性能的示例分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/155759.html