Python3.11を試す

こんにちは。ksr_cyclです。

Pythonの3.11がリリースされました。

細かな変更点はいくつかあるようですが、最も大きなニュースは「高速化」になると思います。

今回はどれくらい高速化したのか、軽く検証してみようと思います。


検証に使用したマシンのスペックは以下の通りです。

CPU: Intel Core i5-1035G7

Memory: 16GB


WSL2からDockerコンテナを作成し、検証しています。

比較するバージョンは以下の通りです。

・Python 3.10.5

・Python 3.11.0b4


まずはFizzBuzzを書いて、100万回ループを回して、time.process_time()で時間の計測をします。

import time

def fizzbuzz(n_iter):
    for i in range(1, n_iter+1):
        if (i % 3 == 0) and (i % 5 == 0):
            print('FizzBuzz')
        elif i % 3 == 0:
            print('Fizz')
        elif i % 5 == 0:
            print('Buzz')
        else:
            print(i)

if __name__ == '__main__':
    s = time.process_time()
    fizzbuzz(1000000)
    e = time.process_time()
    print(f'\n{e-s}')

結果は以下の通りです。

・3.10.5: 9.2020941 sec

・3.11.0b4: 8.9693866 sec


若干3.11の方が速い結果となりました。


次に素数列挙のプログラムで検証してみます。

import time

def primality_test(from_n, to_n):
    for i  in range(from_n, to_n+1):
        half_num = i // 2
        flag = True
        for j in range(from_n, half_num+1):
            if i % j == 0:
                flag = False
                break
        if flag == True:
            print(i)


if __name__ == '__main__':
    s = time.process_time()
    primality_test(2, 100000)
    e = time.process_time()
    print(f'\n{e-s}')

結果は以下の通りです。

・3.10.5: 15.7998533 sec

・3.11.0b4: 12.2720459 sec

FizzBuzzより若干複雑なせいか?、かなりの差が出ました。

今回の高速化によって、Pythonがより使いやすくなったと思います。

以上で、終わりです。