PythonでTrueとFalse、どちらを初期で格納した方が処理が早いのか(Python3)
今回はPythonでbool型の変数にTrueとFalse、どちらを初期で格納した方が処理が早いのか実際に確かめてみました。
動作環境はPython3です。
PythonでTrueとFalse、どちらを初期で格納した方が処理が早いのか(Python3)
本当は別の実験をしてみたかったのですが、その前提条件がフェアなのかどうか調べたいため一旦TrueとFalse、どちらを初期で変数に格納した方が動作速度が早いのか調べてみます。
bool型のTrueとFalse、どちらを初期で格納した方が処理が早いのか調べるに当たって次のようなコードを用意しました。
まずは変数にTrueを格納する動作を1億回ループ、それを三回実行させるコードです。
1 2 3 4 5 6 7 8 |
import time for j in range(3): start = time.time() for i in range(100000000): flag = True print(str(j+1) + ' times.') process_time = time.time() - start print(process_time) |
一方、変数にFalseを格納する動作を1億回ループ、それを三回実行させるコードがこちらになります。
1 2 3 4 5 6 7 8 |
import time for j in range(3): start = time.time() for i in range(100000000): flag = False print(str(j+1) + ' times.') process_time = time.time() - start print(process_time) |
手始めにこれらを実行したところ、それぞれ次のような実行結果となりました。
〜変数にTrueを格納する動作を1億回ループさせる動作を3回繰り返した場合〜
1 2 3 4 5 6 7 8 |
1 times. 5.345915794372559 2 times. 5.291324853897095 3 times. 5.342236757278442 Process finished with exit code 0 |
〜変数にFalseを格納する動作を1億回ループさせる動作を3回繰り返した場合〜
1 2 3 4 5 6 7 8 |
1 times. 5.192842960357666 2 times. 5.150177001953125 3 times. 5.12950587272644 Process finished with exit code 0 |
ぱっと見、二つの処理について動作速度はほぼ差はないように見えます。
しかしこれだけではなんとも言えません。
まだ試行回数が不十分です。
よって、1億回ループさせる動作をそれぞれ100回実行させてみました。
次のコードを用意して変数に格納する動作を自動的に1億回ループさせることを100回繰り返すようにしました。
勝手に動作速度平均も出力させるようにします。
実証するためのソースコードは、次の通りです。(変数にFalseを格納するソースについては似たようなコードになるため省きます。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import time resultList = [] for j in range(100): start = time.time() for i in range(100000000): flag = True print(str(j+1) + ' times.') process_time = time.time() - start resultList.append(process_time) print(process_time) print("") ave = sum(resultList) / len(resultList) print('平均: ' + str(ave)) |
途中printを挟んで100回それぞれの計測タイムを出力しているようにしていますが、その出力結果は省いて平均タイムのみ載せます。
〜変数にTrueを格納する動作を1億回ループさせる動作を3回繰り返した場合〜
1 |
平均: 5.218435306549072 |
〜変数にFalseを格納する動作を1億回ループさせる動作を3回繰り返した場合〜
1 |
平均: 4.984365501403809 |
結果を見ると、最初にTrueではなくFalseを格納した方が処理が早いという結果になりました。
bool型の変数宣言をする場合はFalseを宣言した方が動作が早くなりそうです。
しかしながら、ほとんど誤差に近いのでそこまで意識する必要はないかもしれないですね。
終わりに
今回はPythonでbool型の変数にTrueとFalse、どちらを初期で格納した方が処理が早いのかについてパフォーマンス調査を行いました。
PythonやPythonを使ったライブラリやフレームワークのパフォーマンスの調査に興味があり、様々なコーディング方法の違いによる最適化の調査を行っております。
リストにまとめてあるので、よろしければ覗いてみてください。
Pythonとそのライブラリやフレームワークのパフォーマンス調査結果リスト
ディスカッション
コメント一覧
まだ、コメントがありません