質問編集履歴
3
PyPy, Cythonでの計測結果追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -122,17 +122,21 @@
|
|
122
122
|
|
123
123
|
####測定結果
|
124
124
|
|
125
|
-
|バージョン|#1(毎回keys())|#1(固定keys)|#2|
|
125
|
+
|Python実装|バージョン|#1(毎回keys())|#1(固定keys)|#2|補足|
|
126
126
|
|
127
|
-
|:--|:--:|:--:|:--:|
|
127
|
+
|:--|:--:|:--:|:--:|:--:|:--:|
|
128
128
|
|
129
|
-
|2.7.16|(計測断念)|(計測断念)|0.166±0.005|
|
129
|
+
|CPython|2.7.16|(計測断念)|(計測断念)|0.166±0.005|-|
|
130
130
|
|
131
|
-
|3.7.3|0.1888±0.005|0.150±0.005|0.147±0.004|
|
131
|
+
|CPython|3.7.3|0.1888±0.005|0.150±0.005|0.147±0.004|-|
|
132
|
+
|
133
|
+
|PyPy|2.7.13|(計測断念)|(計測断念)|0.069±0.003|docker使用|
|
134
|
+
|
135
|
+
|PyPy|3.6.9|0.084±0.004|0.074±0.005|0.070±0.004|docker使用|
|
136
|
+
|
137
|
+
|Cython|3.7.3|0.157±0.010|0.109±0.003|0.107±0.004|Jupyter Notebook使用|
|
132
138
|
|
133
139
|
|
134
|
-
|
135
|
-
Python実装: CPython
|
136
140
|
|
137
141
|
単位: 秒
|
138
142
|
|
@@ -142,7 +146,7 @@
|
|
142
146
|
|
143
147
|
####考察
|
144
148
|
|
145
|
-
|
149
|
+
バージョンに依らず、```#2```の方法が速いように見える
|
146
150
|
|
147
151
|
|
148
152
|
|
2
hayataka2049さんの回答より、dic.keys()を事前に計算する方式を追加。ついでに測定回数を100回にし、平均と標準偏差を出した。
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,9 +36,23 @@
|
|
36
36
|
|
37
37
|
import time
|
38
38
|
|
39
|
+
from math import sqrt
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
mean=lambda list: sum(list)/len(list)
|
44
|
+
|
45
|
+
def stdev(list):
|
46
|
+
|
47
|
+
avg = mean(list)
|
48
|
+
|
49
|
+
return sqrt(sum([(x-avg)*(x-avg) for x in list])/(len(list)-1))
|
50
|
+
|
39
51
|
|
40
52
|
|
41
53
|
N=1000000
|
54
|
+
|
55
|
+
REP=100
|
42
56
|
|
43
57
|
dic = {float(x):float(x) for x in range(N)}
|
44
58
|
|
@@ -60,15 +74,29 @@
|
|
60
74
|
|
61
75
|
raise Exception
|
62
76
|
|
63
|
-
|
77
|
+
return end - start
|
64
78
|
|
65
79
|
|
66
80
|
|
67
|
-
func(
|
81
|
+
def func2(f):
|
68
82
|
|
83
|
+
times = [func(f) for i in range(REP)]
|
84
|
+
|
85
|
+
print(str(mean(times)) + "\t" + str(stdev(times)))
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
func2(lambda x: x in dic)
|
90
|
+
|
91
|
+
keys = dic.keys()
|
92
|
+
|
93
|
+
func2(lambda x: x in keys)
|
94
|
+
|
69
|
-
func(lambda x: x in dic.keys())
|
95
|
+
func2(lambda x: x in dic.keys())
|
70
96
|
|
71
97
|
```
|
98
|
+
|
99
|
+
※hayataka2049さんの回答より、dic.keys()を事前に計算する方式を追加。ついでに測定回数を100回にし、平均と標準偏差を出した。
|
72
100
|
|
73
101
|
|
74
102
|
|
@@ -94,13 +122,13 @@
|
|
94
122
|
|
95
123
|
####測定結果
|
96
124
|
|
97
|
-
|バージョン|#1|#2|
|
125
|
+
|バージョン|#1(毎回keys())|#1(固定keys)|#2|
|
98
126
|
|
99
|
-
|:--|:--:|--:|
|
127
|
+
|:--|:--:|:--:|:--:|
|
100
128
|
|
101
|
-
|2.7.16|(計測断念)|0.166|
|
129
|
+
|2.7.16|(計測断念)|(計測断念)|0.166±0.005|
|
102
130
|
|
103
|
-
|3.7.3|0.1
|
131
|
+
|3.7.3|0.1888±0.005|0.150±0.005|0.147±0.004|
|
104
132
|
|
105
133
|
|
106
134
|
|
@@ -108,7 +136,7 @@
|
|
108
136
|
|
109
137
|
単位: 秒
|
110
138
|
|
111
|
-
測定回数: 1
|
139
|
+
測定回数: 100
|
112
140
|
|
113
141
|
|
114
142
|
|
1
Python実装を書き忘れたので項目追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -104,6 +104,8 @@
|
|
104
104
|
|
105
105
|
|
106
106
|
|
107
|
+
Python実装: CPython
|
108
|
+
|
107
109
|
単位: 秒
|
108
110
|
|
109
111
|
測定回数: 1
|