🍲
Python 3.14 が速くなったときいてマイクロベンチマーク
これは何?
Python 3.14 が速くなったという噂を聞いたので、今日も楽しいマイクロベンチマーク。
計算内容
思いつきで適当に書いた意味のない計算。
Python3
import sys
S=int(sys.argv[1])
def t(s):
if s<=2:
return [s]
a = s//2
b = s-a
return [s, t(a), t(b) ]
def c(a):
if len(a)==1:
return a[0]
return a[0]+c(a[1])+c(a[2])
print(c(t(S)))
意味のないツリーをたどって総和を出力する。
$ python3 hoge.py 10000000
234834176
などとなればよい。
せっかくなので、ruby も参戦。
ruby
S=ARGV[0].to_i
def t(s)
return [s] if s<=2
a = s/2
b = s-a
return [s, t(a), t(b)]
end
def c(a)
return a[0] if a.size==1
a[0] + c(a[1]) + c(a[2])
end
p c(t(S))
同様に
$ ruby hoge.rb 10000000
234834176
などとなれば良い。
これで、引数が 10000000 の場合の時間を測った。
計算機は、MacBook Pro 2021 with Apple M1 非 Max。
結果
下表の通り。
| 処理系 | 処理時間(秒) |
|---|---|
| Python 3.14 | 8.018 |
| Python 3.13 | 13.799 |
| Python 3.12 | 14.652 |
| Python 3.11 | 14.793 |
| Python 3.10 | 15.33 |
| ruby 3.4.5 | 2.05 |
| ruby 3.3.9 | 1.75 |
| ruby 3.2.9 | 1.94 |
すくなくともこの計算では、Python 3.14 はそれまでの Python よりだいぶ速い。
一方 ruby 3.4.5 は 以前の ruby よりちょっと遅くなっている。
グラフにすると下図。

補足
これは練られていないマイクロベンチマーク。
この計算を選ぶ合理的理由はないし、別の計算をしたら別の結果になると思う。
これの結果を以て「Python は ruby より遅い」という事はできないことに注意。
Discussion