こんにちは。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がより使いやすくなったと思います。
以上で、終わりです。