把从数据库中取出的数据放在一个字典里,
其中一个 column 编号作为字典的 key,
请问这个 key 要 int ()一下 还是 str ()一下比较好?
1
ryd994 2015-08-28 14:49:24 +08:00 via Android 1
既然已知是数字,当然 int 好
字符串比较性能根本没法比 |
2
WKPlus 2015-08-28 19:37:27 +08:00 3
数据说话:
In [18]: d={i:2*i for i in xrange (1000000 )} In [19]: %timeit 10000 in d 10000000 loops, best of 3: 97.9 ns per loop In [20]: d={str (i ):2*i for i in xrange (1000000 )} In [21]: %timeit "10000" in d 10000000 loops, best of 3: 92 ns per loop 看到数据有点吃惊,但转念一想 dict 查找或者插入都先是 hash , hash 之后都是 int 了,比较也是比较的 hash 后的值(除了冲突的时候),所以就再比较一下 str 和 int 计算 hash 的效率: In [24]: %timeit hash (12312093810298310928301 ) 10000000 loops, best of 3: 81.7 ns per loop In [25]: %timeit hash ("12312093810298310928301") 10000000 loops, best of 3: 78.5 ns per loop 如果有冲突,就需要值比对了,理论上来说这时候就需要对 str 进行比较了,应该比较慢了,但是还没有好的方法去寻找两个 hash 值一样的 str ,所以暂时无法测试 |