Python をコンパイルするときに --enable-optimizations は何をするのですか?
質問
arm ベースの Linux マシンで Python 3.6 をコンパイルしようとしています。
./configure
はこれを出力します。
すべての最適化(LTO、PGOなど)を有効にしたリリースビルドが必要な場合。 を実行してください。
./configure --enable-optimizations
.
は何をするのか
--enable-optimizations
は何をするのでしょうか?
どのように解決するのですか?
このフラグは、Profile guided optimization (PGO) と Link Time Optimization (LTO) を有効にします。
どちらも高価な最適化で、ビルド プロセスを遅くしますが、かなりの速度向上 (私が読んだ記憶では約 10 ~ 20%) が得られます。
これらの が正確に何をするのかについての議論は は、私の知識を超えており、おそらく 1 つの質問には広すぎます。いずれにせよ、LTO について、以下のサイトから少し読むことができます。 GCC のドキュメントを参照してください。 を読んで、PGOを始めることができます。 のwikiページ .
また、これらを追加した Python Bug Tracker で開かれた関連する課題もご覧ください。
- 課題 24915 : プロファイル ガイド付き最適化の改善 (トレーニングの改善、llvm サポートなど) (PGOを追加しました。)
- 課題25702 : GCC および CLANG のリンクタイム最適化のサポート (LTOを追加しました。)
-
課題 26359
:
すぐに使えるパフォーマンスのための CPython ビルドオプション
(このオプションは
--enable-optimizations
フラグをconfigureスクリプトに追加し、前述の最適化を可能にします)。
コメントで @Shuo から指摘され、また
課題 28032
で述べているように、LTO は
常に
で有効になります。
--enable-optimizations
フラグで有効になります。一部のプラットフォーム (
のサポートバージョンによっては
gcc
) は、設定スクリプトで無効にします。
このフラグの将来のバージョンは、おそらく常に有効になっているでしょうから、ここで両方について話しておくのはかなり安全です。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Python 3 の "python -m SimpleHTTPServer" に相当するものは何ですか?
-
[解決済み] php.iniはどこにありますか?
-
[解決済み] Pythonの関数定義における->の意味とは?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] バブルソートの宿題
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Django filter queryset __in for *every* item in list