ソースtarからpython。
0:16:20 [178/405] test_inspect
0:16:26 [179/405] test_int
0:16:27 [180/405] test_int_literal
0:16:27 [181/405] test_io
0:18:18 [182/405] test_ioctl -- test_io passed in 1 min 51 sec
0:18:19 [183/405] test_ipaddress
0:18:22 [184/405] test_isinstance
0:18:23 [185/405] test_iter
0:18:24 [186/405] test_iterlen
0:18:25 [187/405] test_itertools
0:19:09 [188/405] test_json -- test_itertools passed in 44 sec
0:19:30 [189/405] test_keyword
結果として
make 7724,86s user 188,63s system 101% cpu 2:10:18,93 total
このように配布します
PYTHON_VERSION = 3.6.1
PYTHON_URL = https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz
wget -O dl/Python-${PYTHON_VERSION}.tar.xz ${PYTHON_URL}
cd dl
tar xf Python-${PYTHON_VERSION}.tar.xz
mkdir -p dl/Python-${PYTHON_VERSION}-build/
cd Python-${PYTHON_VERSION}
./configure --enable-optimizations --prefix=$$(pwd)-build --cache-file=$$(pwd)/cache-file
このコマンドは、テストを2回実行します。
make -C dl/Python-${PYTHON_VERSION} -j8
make -C dl/Python-${PYTHON_VERSION} -j8 install
追伸これは別のメイクファイルの一部です。
Configureオプション--enable-optimizationsを使用すると、テストスイートを実行してPythonのプロファイリング用のデータを生成できます。結果のpythonバイナリは、pythonコードを実行する際のパフォーマンスが向上します。改善点は here
From configure help:
--enable-optimizations Enable expensive optimizations (PGO, etc). Disabled by default.
ウィキペディアから
profile-guided optimisation uses the results of profiling test runs of the instrumented program to optimize the final generated code.
要するに、プロファイリングに必要なデータはテストの実行によって生成されるため、-enable-optimizationsを使用する場合、テストをスキップしないでください。 make -j8 build_all
に続いてmake -j8 install
を実行すると、テストを1回スキップできます(テストはinstall
ターゲットで実行されます)が、それでは目的が達成できません。代わりに、構成時間を短縮するために構成フラグをドロップできます。
Pythonをビルドするときに、次のいずれかを指示することにより、テストの実行をスキップすることに関するいくつかの(クイック)研究を行いました。
--without-tests
、--disable-tests
、--skip-tests
)前者では結果が得られませんでした。後者は(Makefileテンプレートを調べることで)$ {PYTHON_SRC_DIR} /Tools/scripts/run_tests.py(いくつかのものを設定し、別のスクリプトを呼び出し、別のスクリプトを呼び出します、...)。
ファイルはPython 3.5(.4)およびPython 3.6(.4)にありますが、notPython 2.7(.14)。もう少し調査したところ、(上記の)テスト実行をスキップできることが明らかになりました。あなたがする必要があるのは:
make -C dl/Python-${PYTHON_VERSION} -j8 EXTRATESTOPTS=--list-tests install
Notes:
EXTRATESTOPTS=--list-tests
を設定することもできます@ EDIT:
@amohrのコメントの後、もう少しプレイすることに決めたので、プロセス全体を実行しました。
make install
2つの[〜#〜] cpu [〜#〜] sを含むLnx(btu 16)マシンで、1回の(完全な)テスト実行に〜24分。これが私の発見です(Python 3.6):
make test
)がinstallターゲット1についてst Makefile、およびmakeの出力を確認して、テストを実行します。nd (make)ステップ:
-fprofile-generate
は-fprofile-use -fprofile-correction
に置き換えられました(チェック [GNU。 GCC]:最適化を制御するオプション 詳細については)))前の(サブ)ステップで生成されたプロファイル情報を使用する1をスキップst テスト実行は自動的にno最適化を意味します。達成方法:
make build_all
(at 2nd ステップ)-他の回答が示唆するとおり
configure(with--enable-optimizations
)によって生成された(ルート)Makefileのスニペットは次のとおりです。
all: profile-opt
build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks \
Programs/_testembed python-config
そして、これはwithoutitです:
all: build_all
build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks \
Programs/_testembed python-config
見られるように、実行中:
configure --enable-optimizations
make build_all
以下と同じです:
configure
make
(ルート)Makefileを1の間で手動で変更しますst (configure --enable-optimizations
)および2nd (make)ステップ:
PROFILE_TASK=-m test.regrtest --pgo
を見つけます(私にとっては〜25行あたりでした)--list-tests
を追加します最適化されたビルドのデフォルトのビルドターゲットには、テストの実行が含まれます。それらをスキップするには、試してください:
make -C dl/Python-${PYTHON_VERSION} -j8 build_all
ビルドしてインストールするだけです
make -j8 build_all
make -j8 altinstall