美文网首页
python两种词典存储方式哪种效率问题

python两种词典存储方式哪种效率问题

作者: 794de449c8d3 | 来源:发表于2016-05-24 11:13 被阅读475次
  • 实例数据 五列联合主键
    k1 = "24332"k2 = "p1"k3 = "2014"k4 = "12"k5 = "03"# 收入值amt_value = 234.3

  • 存储方式一:单维度存储数据

dict_datas = {}union_key = (k1,k2,k3,k4,k5)dict_datas[union_key] = amt_value
查询方法 rs_amt_value = dict_datas.get(union_key, 0.0)

  • 存储方式二:每个主键一个维度,多维度存储

dict_datas = {}dict_datas[k1][k2][k3][k4][k5] = amt_value
try: rs_amt_value = dict_datas.get(k1).get(k2).get(k3).get(k4).get(k5)except: rs_amt_value = 0.0

  • 内存占用:tuple占用大量内存,是nestedkey 64倍,数据量放大到300M 扩大到比例为127倍


    内存占用对比
  • 10w条数据查询效率:tuple查询速率基本为0,nested10w次均匀分布在0.001这个级别,也基本为0

datas_tuple_key.get((tuple))
datas_nested_key[key0][key1][key2][key3][key4]

查询速度对比
  • 测试总结:
测试结果 说明
代码编写复杂度 tuplekey 优 tuplekey编写简洁
构建内存的时间 tuplekey 优 nestedkey 进行了更多的监测,tuplekey只hash一次
构建后内存占用率 tuplekey 弱 nestedkey 是维度加法,tuplekey是维度乘法
查询效率 tuplekey稍快 差别不大 数据量大会放大,内存也会放大

待续

相关文章

网友评论

      本文标题:python两种词典存储方式哪种效率问题

      本文链接:https://www.haomeiwen.com/subject/wmlzrttx.html