4

最近、sqlite3のソースコードを読んでいます。統合バージョンでは、ファイルは4つだけです。公式ウェブサイトで、彼らはそれを言います:

「合併により、実行も高速化されます」

「個々のソースファイルではなく、アマルガメーションを使用してSQLiteをコンパイルすると、5〜10%のパフォーマンスの向上が測定されました。」

彼らがどうやってそれを成し遂げたのか、そしてその理由がわかりません。誰かアイデアはありますか?それを行うために利用できるツールはありますか?

4

1 に答える 1

4

すべての.cファイルを解析し、すべて#includeのsを抽出してから、最初にすべてのインクルードをリストし、次にそれらの.cファイルの他のすべてのコンテンツをリストする巨大なファイルを作成すると、同様の結果が得られます。

このようにして、すべてのコードを単一の変換ユニットに含めることができるため、コンパイラーはすべてのコードを一度に確認して、より適切な最適化を実行できます。これはほとんどのCコンパイラに関連しますが、最新のコンパイラはいわゆるリンク時コード生成を備えており、コンパイラは複数の変換ユニットのコードを一度に(リンク時に)表示し、マージトリックがなくてもより良いコードを生成できます。

于 2011-09-14T10:20:15.077 に答える