FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages

高速C++コンパイラZapccの試行(2. GCC / LLVM / zapcc でのコンパイル速度比較)

https://www.zapcc.com/wp-content/uploads/2018/06/xcopy-zapcc-logo.png.pagespeed.ic.HTEiBd-jW-.webp

zapccは先日発表されたClangをベースとしたコンパイラである。基本的な高速化の手法についてはいろんなところで公開されているのでそちらをチェックして欲しい。

サーバクライアント方式にすることで高速化を図っているということなのだが、実際にはどの程度の速度が出るのか挑戦してみたい。

ということで、自分で管理しているRISC-VシミュレータをGCC/LLVM/zapccでコンパイルして、コンパイル速度を比較してみたい。

調査したのは以下のコンパイラについて自作RISC-Vシミュレータをコンパイルしてその速度を比較する。 ビルド環境はCMakeで作ってあるのでCC, CXXを変更してコンパイル速度を見る。 ここではtimeコマンドを使って、user時間のみを計測した。

  • 使用バージョン
$ clang++ --version
clang version 7.0.0 (http://llvm.org/git/clang.git 7d013cb1a231fb165b41120e8aa786b044b0b8bd) (http://llvm.org/git/llvm.git 04d15315b2afc0be0839c9d9045644841c384455)
Target: x86_64-unknown-linux-gnu
Thread model: posix

$ zapcc++ --version
clang version 6.0.0 (trunk) (https://github.com/yrnkrn/zapcc.git 2c88635dd66151adad5119c4929a81d8d428c739)
Target: x86_64-unknown-linux-gnu
Thread model: posix

$ gcc --version
gcc (GCC) 6.2.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ CC=zapcc CXX=zapcc++ cmake . && make   # zapccによるビルド
$ CC=clang CXX=clang++ cmake . && make # LLVMによるビルド
$ CC=gcc CXX=c++ cmake . && make # gccによるビルド

それぞれ結果は以下のようになった。

  • zapcc : 0m13.323s
  • LLVM : 0m39.539s
  • gcc : 0m47.468s

なるほど、zapcc、高速だ。っていうかClangもgccより速いんですね。LLVM系列にビルド環境は移行しようかな。

f:id:msyksphinz:20180706230639p:plain