关于纠结dict遍历中带括号与不带括号的性能问题
1 for (d,x) in dict.items():2 print "key:"+d+",value:"+str(x)3 4 for d,x in dict.items():5 print "key:"+d+",value:"+str(x)
带括号和不带括号性能测试结果:
测试结果
1 测试条数:15 2 带括号开始时间:2012-06-14 12:13:37.375000 3 带括号结束时间:2012-06-14 12:13:37.375000 4 时间间隔:0:00:00 5 不带括号开始时间:2012-06-14 12:13:37.375000 6 不带括号结束时间:2012-06-14 12:13:37.375000 7 时间间隔:0:00:00 8 9 测试条数:5010 带括号开始时间:2012-06-14 12:13:57.92100011 带括号结束时间:2012-06-14 12:13:57.92100012 时间间隔:0:00:0013 不带括号开始时间:2012-06-14 12:13:57.92100014 不带括号结束时间:2012-06-14 12:13:57.93700015 时间间隔:0:00:00.01600016 测试条数:10017 带括号开始时间:2012-06-14 11:53:57.45300018 带括号结束时间:2012-06-14 11:53:57.46800019 时间间隔:0:00:00.01500020 不带括号开始时间:2012-06-14 11:53:57.46800021 不带括号结束时间:2012-06-14 11:53:57.53100022 时间间隔:0:00:00.06300023 24 测试条数:15025 带括号开始时间:2012-06-14 12:00:54.81200026 带括号结束时间:2012-06-14 12:00:54.82800027 时间间隔:0:00:00.01600028 不带括号开始时间:2012-06-14 12:00:54.82800029 不带括号结束时间:2012-06-14 12:00:54.92100030 时间间隔:0:00:00.09300031 32 测试条数:20033 带括号开始时间:2012-06-14 11:59:54.60900034 带括号结束时间:2012-06-14 11:59:54.68700035 时间间隔:0:00:00.07800036 不带括号开始时间:2012-06-14 11:59:54.68700037 不带括号结束时间:2012-06-14 11:59:54.73400038 时间间隔:0:00:00.04700039 40 测试条数:50041 带括号开始时间:2012-06-14 11:54:39.90600042 带括号结束时间:2012-06-14 11:54:40.07800043 时间间隔:0:00:00.17200044 不带括号开始时间:2012-06-14 11:54:40.07800045 不带括号结束时间:2012-06-14 11:54:40.12500046 时间间隔:0:00:00.04700047 48 测试条数:100049 带括号开始时间:2012-06-14 11:54:49.17100050 带括号结束时间:2012-06-14 11:54:49.43700051 时间间隔:0:00:00.26600052 不带括号开始时间:2012-06-14 11:54:49.43700053 不带括号结束时间:2012-06-14 11:54:49.60900054 时间间隔:0:00:00.17200055 56 测试条数:200057 带括号开始时间:2012-06-14 11:54:58.92100058 带括号结束时间:2012-06-14 11:54:59.32800059 时间间隔:0:00:00.40700060 不带括号开始时间:2012-06-14 11:54:59.32800061 不带括号结束时间:2012-06-14 11:54:59.68700062 时间间隔:0:00:00.35900063 64 测试条数:500065 带括号开始时间:2012-06-14 11:55:05.78100066 带括号结束时间:2012-06-14 11:55:06.73400067 时间间隔:0:00:00.95300068 不带括号开始时间:2012-06-14 11:55:06.73400069 不带括号结束时间:2012-06-14 11:55:07.60900070 时间间隔:0:00:00.87500071 72 测试条数:1000073 带括号开始时间:2012-06-14 11:55:15.65600074 带括号结束时间:2012-06-14 11:55:17.39000075 时间间隔:0:00:01.73400076 不带括号开始时间:2012-06-14 11:55:17.39000077 不带括号结束时间:2012-06-14 11:55:19.10900078 时间间隔:0:00:01.71900079 80 测试条数:2000081 带括号开始时间:2012-06-14 12:19:14.92100082 带括号结束时间:2012-06-14 12:19:18.59300083 时间间隔:0:00:03.67200084 不带括号开始时间:2012-06-14 12:19:18.59300085 不带括号结束时间:2012-06-14 12:19:22.21800086 时间间隔:0:00:03.625000
我们可以看出,dict条数在200一下的时候是带括号的性能比较高一点,但是在200条以上的数据后不带括号的执行时间会少些.
下面是测试代码:
测试Code
1 #-*- coding: utf-8 -*- 2 import datetime,codecs 3 4 dict = {} 5 6 for i in xrange(0,20000): 7 dict.setdefault("name"+str(i)) 8 dict["name"+str(i)]="name" 9 10 s=codecs.open(r'c:\\dict.txt','a', 'utf-8')11 12 def write(des):13 s.write(des.decode("utf-8"))14 15 write("测试条数:")16 write(str(len(dict))+"\r\n")17 write("带括号开始时间:")18 a=datetime.datetime.now()19 s.write(str(a)+"\r\n")20 21 for (d,x) in dict.items():22 print "key:"+d+",value:"+str(x)23 write("带括号结束时间:")24 b=datetime.datetime.now()25 write(str(b)+"\r\n")26 write("时间间隔:")27 write(str(b-a)+"\r\n")28 29 write("不带括号开始时间:")30 c=datetime.datetime.now()31 write(str(c)+"\r\n")32 for d,x in dict.items():33 print "key:"+d+",value:"+str(x)34 write("不带括号结束时间:")35 d=datetime.datetime.now()36 write(str(d)+"\r\n")37 write("时间间隔:")38 write(str(d-c)+"\r\n")39 write("\r\n")40 s.close()
中文乱码问题有没有很好的解决办法....?