关于纠结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 测试条数:50
10 带括号开始时间:2012-06-14 12:13:57.921000
11 带括号结束时间:2012-06-14 12:13:57.921000
12 时间间隔:0:00:00
13 不带括号开始时间:2012-06-14 12:13:57.921000
14 不带括号结束时间:2012-06-14 12:13:57.937000
15 时间间隔:0:00:00.016000
16 测试条数:100
17 带括号开始时间:2012-06-14 11:53:57.453000
18 带括号结束时间:2012-06-14 11:53:57.468000
19 时间间隔:0:00:00.015000
20 不带括号开始时间:2012-06-14 11:53:57.468000
21 不带括号结束时间:2012-06-14 11:53:57.531000
22 时间间隔:0:00:00.063000
23
24 测试条数:150
25 带括号开始时间:2012-06-14 12:00:54.812000
26 带括号结束时间:2012-06-14 12:00:54.828000
27 时间间隔:0:00:00.016000
28 不带括号开始时间:2012-06-14 12:00:54.828000
29 不带括号结束时间:2012-06-14 12:00:54.921000
30 时间间隔:0:00:00.093000
31
32 测试条数:200
33 带括号开始时间:2012-06-14 11:59:54.609000
34 带括号结束时间:2012-06-14 11:59:54.687000
35 时间间隔:0:00:00.078000
36 不带括号开始时间:2012-06-14 11:59:54.687000
37 不带括号结束时间:2012-06-14 11:59:54.734000
38 时间间隔:0:00:00.047000
39
40 测试条数:500
41 带括号开始时间:2012-06-14 11:54:39.906000
42 带括号结束时间:2012-06-14 11:54:40.078000
43 时间间隔:0:00:00.172000
44 不带括号开始时间:2012-06-14 11:54:40.078000
45 不带括号结束时间:2012-06-14 11:54:40.125000
46 时间间隔:0:00:00.047000
47
48 测试条数:1000
49 带括号开始时间:2012-06-14 11:54:49.171000
50 带括号结束时间:2012-06-14 11:54:49.437000
51 时间间隔:0:00:00.266000
52 不带括号开始时间:2012-06-14 11:54:49.437000
53 不带括号结束时间:2012-06-14 11:54:49.609000
54 时间间隔:0:00:00.172000
55
56 测试条数:2000
57 带括号开始时间:2012-06-14 11:54:58.921000
58 带括号结束时间:2012-06-14 11:54:59.328000
59 时间间隔:0:00:00.407000
60 不带括号开始时间:2012-06-14 11:54:59.328000
61 不带括号结束时间:2012-06-14 11:54:59.687000
62 时间间隔:0:00:00.359000
63
64 测试条数:5000
65 带括号开始时间:2012-06-14 11:55:05.781000
66 带括号结束时间:2012-06-14 11:55:06.734000
67 时间间隔:0:00:00.953000
68 不带括号开始时间:2012-06-14 11:55:06.734000
69 不带括号结束时间:2012-06-14 11:55:07.609000
70 时间间隔:0:00:00.875000
71
72 测试条数:10000
73 带括号开始时间:2012-06-14 11:55:15.656000
74 带括号结束时间:2012-06-14 11:55:17.390000
75 时间间隔:0:00:01.734000
76 不带括号开始时间:2012-06-14 11:55:17.390000
77 不带括号结束时间:2012-06-14 11:55:19.109000
78 时间间隔:0:00:01.719000
79
80 测试条数:20000
81 带括号开始时间:2012-06-14 12:19:14.921000
82 带括号结束时间:2012-06-14 12:19:18.593000
83 时间间隔:0:00:03.672000
84 不带括号开始时间:2012-06-14 12:19:18.593000
85 不带括号结束时间:2012-06-14 12:19:22.218000
86 时间间隔: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()
中文乱码问题有没有很好的解决办法....?