パソコン鳥のブログ

アクセスカウンタ

zoom RSS いつも make で高速化する

<<   作成日時 : 2017/02/21 23:13   >>

ナイス ブログ気持玉 1 / トラックバック 0 / コメント 0

makeコマンドは -jオプションを付けると、並列で処理を行い、make時間を短縮できます。
しかし、いつも手動で -jオプションを付けるのは面倒なので、自動的に指定されるようにします。

~/.bashrc の末尾に次の行を追加しておくと、make 実行時にいつも -j4オプションが指定されたことになります。


export MAKEFLAGS=-j4 $MAKEFLAGS


-j には並列に動作させる処理数を指定するので、CPU数に応じて、-j4 を -j8 等に増やしてください。

なお、Makefile の中で -j オプションが指定されている場合は、そちらが優先して使用されます。



-j 指定でどの位速くなるのか


apache のビルド時間がどのように変わるか測定してみました。
なお、今回測定した PC の CPU数は 4 です。

まず、apacheをダウンロードし、make できるように準備します。


wget http://ftp.riken.jp/net/apache//httpd/httpd-2.2.32.tar.gz
tar zxvf httpd-2.2.32.tar.gz
cd httpd-2.2.32/
./configure


make時間の測定は、次で行いました。
-jXX の XX を 1,2,4 の場合で、3回ずつ実行しました。


export MAKEFLAGS=-jXX $MAKEFLAGS
make clean; time make


測定結果です。
real の時間が経過時間で、これに注目します。
user,sys は複数CPUで処理が走った際の、各CPUの時間の合計です。

-jで指定する処理数が増えると、make が並列に処理されて、時間が短くなっています。
-j1(デフォルト)での40秒程に比べて、-j4 では 16秒と 2.5倍速くなっています。

-j1 の場合(-j1 はmakeのデフォルトです)

real 0m40.914s
user 0m31.504s
sys 0m9.221s

real 0m41.428s
user 0m32.356s
sys 0m9.168s

real 0m40.425s
user 0m31.644s
sys 0m8.874s


-j2 の場合

real 0m23.948s
user 0m33.879s
sys 0m8.751s

real 0m24.100s
user 0m34.223s
sys 0m8.807s

real 0m23.938s
user 0m33.985s
sys 0m8.654s


-j4 の場合

real 0m16.256s
user 0m34.209s
sys 0m8.473s

real 0m16.009s
user 0m34.050s
sys 0m8.485s

real 0m16.426s
user 0m34.311s
sys 0m8.529s



参考


コンパイル(make)の高速化 - 元RX-7乗りの適当な日々
makeでジョブ数を増やしてビルドの高速化 - おし、プログラミング
「-j」オプションと「ccache」でコンパイル時間を400%高速化する方法 | OXY NOTES
Man page of MAKE
makeの-jオプション(ジョブの並列実行)をデフォルトに - 学生時代に頑張ったことが何もない

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
ナイス

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
いつも make で高速化する パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる