Pythonにも最適化オプションが存在したことを最近知ったので、メモ程度にまとめます。
Pythonのオプション・環境変数などについてはドキュメントに記載されています。
オプション
-O
assert
の削除- 組み込み定数__debug__の値をFalseにする
-OO
assert
の削除- 組み込み定数__debug__の値をFalseにする
- Docstringを廃棄する
環境変数
PYTHONOPTIMIZE
- この環境変数に空でない文字列を指定すると、-Oオプションを指定した場合と同じ挙動をする
- 整数を設定すると、-Oオプションを複数回指定した場合と同じ挙動をする
実行速度比較
以下の関数を1000回実行した時の合計実行時間を比較しました。
- OS:macOS Monterey 12.4
- CPU:Apple M1
- RAM:8GB
- Python:3.10.3
def add():
"""
add 1 for 100000 iterations
"""
a = 0
for i in range(1, 100001):
a += 1
assert (a == i)
- オプションなし:3.6211 [sec]
- -Oオプション:2.6878 [sec]
- -OOオプション:2.7089 [sec]
感想
assert文を無効にしてでも実行時間を短縮したい場合、デバッグ時のみ有効にしたいコードが存在する場合などは役立ちそうですが、通常の用途では必要ないかもしれませんね。(そもそも実行時間が気になるならC/C++など高速な言語を使うべきという話もありそうですが、、)以上、メモでした。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント