Pythonの最適化オプション

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++など高速な言語を使うべきという話もありそうですが、、)以上、メモでした。

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。

CAPTCHA