🍲

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