Pythonでisinstance(〇〇, ××)とtype(〇〇) is ××はどちらがパフォーマンスが良いのか
今回はPythonでisinstance(〇〇, ××)とtype(〇〇) is ××はどちらがパフォーマンスが良いのかについて調査したのでこちらでご紹介いたします。
Pythonでisinstance(〇〇, ××)とtype(〇〇) is ××はどちらがパフォーマンスが良いのか
Pythonの型で条件分岐を行う際に、isinstance(〇〇, ××)とtype(〇〇) is ××の二つの書き方がありますが、どちらが実行時間が早いのかを調べてきました。
調査するにあたって、次の二つのソースコードを準備しました。
片方のソースはisinstance(〇〇, ××)を10000000回繰り返すのを100回ループさせ実行時間の平均値を出力し、もう片方のソースはtype(〇〇) is ××を10000000回繰り返すのを100回ループさせたソースです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# isinstance調査 import time resultList = [] for j in range(100): testList = [] id = 100 start = time.time() for i in range(10000000): if isinstance(id, int): pass process_time = time.time() - start print(str(j+1) + ' times.') resultList.append(process_time) print(process_time) print('') ave = sum(resultList) / len(resultList) print(resultList) print('平均: ' + str(ave)) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# type(id) is int調査 import time resultList = [] for j in range(100): testList = [] id = 100 start = time.time() for i in range(10000000): if type(id) is int: pass process_time = time.time() - start print(str(j+1) + ' times.') resultList.append(process_time) print(process_time) print('') ave = sum(resultList) / len(resultList) print(resultList) print('平均: ' + str(ave)) |
それぞれ3回実行した結果は次の通りでした。
結論を言うと、Pythonで型を確認するときはtype(id) is intよりもisinstanceを使った方が実行時間が早いです。
1 2 3 4 5 6 7 8 9 10 |
# isinstance調査実行結果 # 1回目 平均: 1.226533257961273 # 2回目 平均: 1.1948993587493897 # 3回目 平均: 1.1409403634071351 |
1 2 3 4 5 6 7 8 9 10 |
# type(id) is int調査実行結果 # 1回目 平均: 1.3382143568992615 # 2回目 平均: 1.5272099208831786 # 3回目 平均: 1.395188081264496 |
終わりに
今回はPythonでisinstance(〇〇, ××)とtype(〇〇) is ××はどちらがパフォーマンスが良いのかの調査結果を書きました。
参考になれば幸いです。
PythonやPythonを使ったライブラリやフレームワークのパフォーマンスの調査に興味があり、様々なコーディング方法の違いによる最適化の調査を行っております。
リストにまとめてあるので、よろしければ覗いてみてください。
Pythonとそのライブラリやフレームワークのパフォーマンス調査結果リスト
ディスカッション
コメント一覧
まだ、コメントがありません