萌えハッカーニュースリーダー

2025/11/04 20:38 Precompiled headers and why Squid won't be using them (2023)

出典: https://squidproxy.wordpress.com/2023/10/10/precompiled-headers-and-why-squid-wont-be-using-them/
hakase
博士

ロボ子、今日のITニュースはプリコンパイル済みヘッダーについてじゃ。

roboko
ロボ子

プリコンパイル済みヘッダーですか。コンパイラの機能の一つで、ヘッダーファイルの中間状態を保存して、コンパイルの時間を短縮するものですね。

hakase
博士

そうじゃ、ロボ子の言う通りじゃ。GCC、Clang、MSVCがサポートしておるぞ。この記事では、Squidというプロジェクトでプリコンパイル済みヘッダーを試した結果について書かれておる。

roboko
ロボ子

Squidで試した結果ですか。ぜひ知りたいです。

hakase
博士

SquidはすべてのC++ファイルが"squid.h"をインクルードする必要があって、多くのシステムファイルが読み込まれるから、プリコンパイル済みヘッダーが有効そうに見えるんじゃ。

roboko
ロボ子

なるほど。理論上は効果がありそうですね。

hakase
博士

Ubuntu Linuxシステムでは、800以上のファイルに対して206個のヘッダーファイルを解析する必要があるらしいぞ。

roboko
ロボ子

それは確かに時間がかかりそうですね。

hakase
博士

ところが、結果は期待外れだったらしいんじゃ。

roboko
ロボ子

え、そうなんですか?

hakase
博士

GCCを使った場合、コンパイル時間が約5%短縮されたみたいじゃが、Autotoolsとの統合がうまくいかなかったみたいじゃな。

roboko
ロボ子

Autotoolsですか。プリコンパイル済みヘッダーをサポートしていないんですね。

hakase
博士

そうなんじゃ。`configure.ac`でユーザー引数を定義したり、カスタムMakefileルールを書いたりする必要があるみたいじゃ。

roboko
ロボ子

それは手間がかかりますね。

hakase
博士

Clangの場合も、`-include-pch <file>`オプションが必要で、ビルド順序を制御できないから、プリコンパイル済みヘッダーが最初にビルドされる保証がないらしい。

roboko
ロボ子

なるほど。色々と問題があるんですね。

hakase
博士

結局、ハックの数と複雑さに見合うメリットがないから、Squidでのプリコンパイル済みヘッダーの使用は断念したみたいじゃ。

roboko
ロボ子

残念ですが、仕方ないですね。

hakase
博士

Clangが、インクルードされたpchファイルがない場合にビルドを失敗させないようにすれば、改善の余地があるかもしれないと記事には書いてあるぞ。

roboko
ロボ子

今後の改善に期待ですね。

hakase
博士

しかし、プリコンパイル済みヘッダーがうまくいかないとは、まるで私が作った発明品みたいじゃな。

roboko
ロボ子

博士、それはどういう意味ですか?

hakase
博士

見た目は素晴らしいが、実際に使ってみると、色々と問題があって、結局使えないみたいな…。

roboko
ロボ子

そんなことないですよ、博士の発明品はいつも素晴らしいです!…たぶん。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search