同じ環境ではないが、VMWare 内の 64bit の方が 32bit よりも早い2020年11月18日 13時25分43秒

最近、VMWare の仮想環境内で C++ のコンパイルを行っている。現在二つの環境を並列して使っている。一つは 32bit の FreeBSD 12.0-RELEASE の i386 版。もう一つは 64bit の FreeBSD 12.2-RELEASE の amd64 版。

二つの環境を使っている理由は C++ のテンプレートを多用するコードのせい。Clang を使っているがコンパイルオプションを増やすと、メモリの利用が増えて、i386 だと 2GB の制限を丁度越えるぐらいで、破損したオブジェクトが生成されて、リンカーが失敗する。その為、二つの環境でコンパイルをする並列作業を行うのだ。

何度も繰り返しているうちに、amd64 の方がコンパイル、リンク共に速いのに気が付いた。体感でしかないので、詳しい数字は出せないのだが 20% から 40% ぐらいは速いのではないか。毎日、コンパイルを続けて、数日起きに行ったり来たりしていたら、なんだが待ち時間が違うなと最近気が付いた。

現時点では上記の通り、OS のバージョンが違う、Clang C++ のバージョンが違う、C++ のコンパイルオプションも違うので、主観的な違いしか計っていないが、面白いと思ったので。

時間があれば、ゆくゆくは FreeBSD 12.0-RELEASE を 12.2-RELEASE に上げて比べられたらと思っている。同じコード、ハードウェアでも、64bit アーキテクチャは長い 64bit 命令を効率良く使えるので 32bit 版よりも速いことも多いなどとよく聞いたりしたので、そのせいかも知れない。

次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2020/11/18/9317812/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。