回答編集履歴
3
pypyのバージョン追加
test
CHANGED
@@ -52,6 +52,9 @@
|
|
52
52
|
---
|
53
53
|
ついでにpypyでも測ってみました。
|
54
54
|
```sh
|
55
|
+
$ pypy3 -V
|
56
|
+
Python 3.6.9 (7.3.1+dfsg-4, Apr 22 2020, 05:15:29)
|
57
|
+
[PyPy 7.3.1 with GCC 9.3.0]
|
55
58
|
$ pypy3 sample.py
|
56
59
|
[HogeWithLt]
|
57
60
|
[0.013435224012937397, 0.01156763598555699, 0.011592883995035663, 0.011952064000070095, 0.011544334003701806, 0.01208959097857587, 0.01161127700470388]
|
2
pypyの結果追加
test
CHANGED
@@ -48,3 +48,20 @@
|
|
48
48
|
$
|
49
49
|
```
|
50
50
|
私の環境だと両方定義した方が割と速いようですね。
|
51
|
+
|
52
|
+
---
|
53
|
+
ついでにpypyでも測ってみました。
|
54
|
+
```sh
|
55
|
+
$ pypy3 sample.py
|
56
|
+
[HogeWithLt]
|
57
|
+
[0.013435224012937397, 0.01156763598555699, 0.011592883995035663, 0.011952064000070095, 0.011544334003701806, 0.01208959097857587, 0.01161127700470388]
|
58
|
+
[0.013763035996817052, 0.011804156994912773, 0.011587033019168302, 0.012147278001066297, 0.011602851998759434, 0.011594195995712653, 0.011793879006290808]
|
59
|
+
[HogeWithGt]
|
60
|
+
[0.013169176992960274, 0.01172563000000082, 0.01144949599984102, 0.01157167399651371, 0.011531008000019938, 0.011383701988961548, 0.011427515011746436]
|
61
|
+
[0.016236709023360163, 0.01355474698357284, 0.02249747299356386, 0.011509436997584999, 0.02142298500984907, 0.01737112400587648, 0.011405222991015762]
|
62
|
+
[HogeWithLtAndGt]
|
63
|
+
[0.01291838800534606, 0.011729608988389373, 0.011620064004091546, 0.011509778996696696, 0.011812743992777541, 0.01150153300841339, 0.01154042498092167]
|
64
|
+
[0.01317515701521188, 0.012265279976418242, 0.011791975004598498, 0.01159220200497657, 0.011521228996571153, 0.011551906995009631, 0.011629011016339064]
|
65
|
+
$
|
66
|
+
```
|
67
|
+
流石に有意な差はなさそうです。
|
1
確認も兼ねて適当なコードを測っていたが、分かりやすく単品で測るコードに修正した
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
速度の話があったので測ってみました。
|
3
3
|
```python
|
4
4
|
import timeit
|
5
|
-
|
5
|
+
|
6
6
|
class Hoge:
|
7
7
|
def __init__(self, v):
|
8
8
|
self.value = v
|
@@ -27,27 +27,24 @@
|
|
27
27
|
def __gt__(self, right):
|
28
28
|
return self.value > right.value
|
29
29
|
|
30
|
-
def test(cls):
|
31
|
-
v1 = cls(1)
|
32
|
-
v2 = cls(2)
|
33
|
-
count = 0
|
34
|
-
for i in range(1000000):
|
35
|
-
if v1 < v2:
|
36
|
-
count += 1
|
37
|
-
if v2 > v1:
|
38
|
-
count += 1
|
39
|
-
return count == 2000000
|
40
|
-
|
41
30
|
for cls in ('HogeWithLt', 'HogeWithGt', 'HogeWithLtAndGt'):
|
31
|
+
print(f'[{cls}]')
|
42
|
-
print(timeit.repeat(f'
|
32
|
+
print(timeit.repeat(f'v1 < v2', f'v1={cls}(1);v2={cls}(2)', number=10000000, globals=globals()))
|
33
|
+
print(timeit.repeat(f'v2 > v1', f'v1={cls}(1);v2={cls}(2)', number=10000000, globals=globals()))
|
43
34
|
```
|
44
35
|
```sh
|
45
36
|
$ python3 --version
|
46
37
|
Python 3.8.10
|
47
38
|
$ python3 sample.py
|
39
|
+
[HogeWithLt]
|
40
|
+
[1.3253876060189214, 1.35883577002096, 1.4073622680152766, 1.36936645701644, 1.31191633301205]
|
48
|
-
[
|
41
|
+
[2.016354927996872, 2.013986409001518, 2.0291321120166685, 2.0595013450074475, 2.0382606999774]
|
42
|
+
[HogeWithGt]
|
43
|
+
[2.0358829490141943, 2.075015729002189, 2.076373985997634, 1.9962386050028726, 2.053162529016845]
|
44
|
+
[1.328342495020479, 1.3259293310111389, 1.3575235510070343, 1.3413178710034117, 1.316727269004332]
|
45
|
+
[HogeWithLtAndGt]
|
49
|
-
[
|
46
|
+
[1.3144145520054735, 1.316202103975229, 1.3855247679748572, 1.3094538759905845, 1.3577031239983626]
|
50
|
-
[3
|
47
|
+
[1.3365965629927814, 1.3250991759996396, 1.3101062320056371, 1.3281135029974394, 1.3213003540004138]
|
51
48
|
$
|
52
49
|
```
|
53
50
|
私の環境だと両方定義した方が割と速いようですね。
|