自定义python自建类型(三)优化

  按照上一篇说的方法,我使用sparse_hash_map替换掉原生的dict,之后进行性能测试的时候发现,如果我们data全部使用SparseDict作为dict的替代,那么其空间性能固然如我们所愿降下来了,但是时间性能却显著恶化。
  经过我们反复测试,我们发现,sparse_hash_map的访问效率,在数据过增大的情况下,查询性能会出现显著下降。
  然后进一步观察我们的数据表,我们发现我们的data的格式大致都是这样的:

data={
    k1:{kk1:d11,kk2:d12……},
    k2:{kk2:d11,kk3:d12……},
    ……
}

  其中:
  第一层的k1……kn的可能组成一般是int跟tuple,偶尔有str,  数量一般很大且不重复(废话);
  第二层的kk1……kkn,数量不多。

  在之前的测试中,我们得出结论是SparseDict并不适合做大dict的替代,但是对于小dict,替换性能比较突出。
  此时我们想到的优化方案就是讲data里的dict用成两种,第一层的大dict用回内建dict,后面的小dict用成SparseDict,达到折中的目的。
下面是我们采取不同组合方法得到的优化效果(表待补)
这里写图片描述
  可以看到,最终取得了时间性能不恶化的情况下获得较高的空间性能的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值