回答編集履歴

3

pypyのバージョン追加

2022/12/03 00:57

投稿

dameo
dameo

スコア943

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の結果追加

2022/12/03 00:50

投稿

dameo
dameo

スコア943

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

確認も兼ねて適当なコードを測っていたが、分かりやすく単品で測るコードに修正した

2022/12/03 00:39

投稿

dameo
dameo

スコア943

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'test({cls})', repeat=5, number=10, globals=globals()))
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
- [4.145923947988194, 4.1600775019906, 4.061264910007594, 4.367324172999361, 4.178785067997524]
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
- [4.413296572005493, 4.240693226995063, 4.326863306996529, 4.334128449001582, 4.284729855004116]
46
+ [1.3144145520054735, 1.316202103975229, 1.3855247679748572, 1.3094538759905845, 1.3577031239983626]
50
- [3.605976359001943, 3.7825241009995807, 3.463920570007758, 3.5332490250002593, 3.3520091669925023]
47
+ [1.3365965629927814, 1.3250991759996396, 1.3101062320056371, 1.3281135029974394, 1.3213003540004138]
51
48
  $
52
49
  ```
53
50
  私の環境だと両方定義した方が割と速いようですね。