【Python】【timeit】コードの処理の実行時間を計測する!
僕は何度か、Pythonの標準機能として既に存在しているプログラムを自分で作りました。自分でアルゴリズムを考えて手を動かす学習のためです。
そんな時に考えたのは、「同じプログラムは同じプログラムでも、処理にかかる時間はそれぞれどのように異なるのだろう」ということでした。
そこで、「timeit」というモジュールを使って、同じプログラムの処理にかかる時間を比較してみることにしました。
今回は以下の、16進数を10進数に変えるプログラムを用いました。参考までに、コメントでいただいた他のプログラムも使わせていただきました。
import timeit
def change_decimal(hexa): #【A】
nums = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,
'7':7,'8':8,'9':9,'A':10,'B':11,
'C':12,'D':13,'E':14,'F':15}
sum = 0
for i in hexa:
sum = 16 * sum + nums[i.upper()]
return sum
HEXA = '0123456789ABCDEF'
def change_decimal2(hexa): #【B】
return sum(HEXA.index(digit.upper()) * (16**n)
for n, digit in enumerate(hexa[::-1]))
try:
hexa = input("16進数を入力してください(マイナス値が扱えません):")
result = change_decimal(hexa)
print("【A】:",result)
print("処理にかかる時間は",timeit.timeit('change_decimal(hexa)',globals=globals()),"です")
print()
result2 = change_decimal2(hexa)
print("【B】:",result2)
print("処理にかかる時間は",timeit.timeit('change_decimal2(hexa)',globals=globals()),"です")
print()
except KeyError:
print('0~9の数字、A~Fの英字を半角で入力してください')
print("Python標準機能:",int(hexa, 16))
print("処理にかかる時間は",timeit.timeit('int(hexa, 16)',globals=globals()),"です")
そうすると出力結果は以下のようになりました。予想できることではありますが、標準機能を使った場合が圧倒的に速いですね。
16進数を入力してください(マイナス値が扱えません):ff5
【A】: 4085
処理にかかる時間は 1.15236393 です
【B】: 4085
処理にかかる時間は 2.2030069250000004 です
Python標準機能: 4085
処理にかかる時間は 0.14431074899999974 です
大規模のプログラムを作るとなると、ロジックやコード量だけでなく、処理速度も考慮に入れなければならないと考えられます。この「timeit」というモジュールの存在を知った時に、プログラミングって奥が深くて面白いなーって思いました。
Author And Source
この問題について(【Python】【timeit】コードの処理の実行時間を計測する!), 我々は、より多くの情報をここで見つけました https://qiita.com/kim-shun/items/6b57e2f042f7812a8d0e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .