python dict 兩種遍歷方式的比較


關於糾結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()

中文亂碼問題有沒有很好的解決辦法....?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM