update.はじめにまさかの第2弾です。前回の記事が好評だったため、今回は少し違った視点からコンパイル時間の削減についての話をさせていただこうと思います。C++17も普及してきたようで、C++の構文はますます複雑化しています。テンプレートを使用したテクニックやconstexprの需要の増加に伴い、ヘッダオンリーのライブラリの増加、コンパイル時処理の増加が見られるようになりました。それと反比例して、C++のコンパイル時間は増大していきます。一つの翻訳単位でもコンパイル時間が数十秒、あるいは数分に及ぶことさえあり、さらにコンパイル中のメモリ消費量も問題になってきます。あるヘッダオンリーライブラリを利用した時は、たった一つの翻訳単位でメモリの6割を消費してしまいました。前回の記事では、主にソースコードに工夫を加えることによってコンパイル時間を削減する方法を紹介してきました。今回は、コンパイラやビルドシステム、設計などに注目してみようと思います。対象となる読者C++のテンプレートや共有ライブラリを使用した経験があり、C++の優れたテンプレートの機能を活用したいが、コンパイルに時間がかかって困っている人。C++で書かれたライブラリの開発に携わっている人。コンパイル時間削減のためのテクニック速いコンパイラを使うコンパイラを変えるとそこまで変わるのか?と思うかもしれません。