HobbyOSs / opennask

nask clone assembly, it can boot tiny OS with Linux
https://github.com/HobbyOSs/opennask/wiki/%E5%8B%95%E4%BD%9C%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF
GNU General Public License v3.0
20 stars 3 forks source link

ccache導入テスト #72

Closed hangingman closed 1 year ago

hangingman commented 1 year ago

fix #68

やったこと

ccache とは C, C++ のビルド高速化ツール 初回は多少ビルド時間が長くなるが、2回目以降は劇的に早くなる

動作確認

備考

キャッシュするタイミングがいつなのか、キャッシュ破棄されるタイミングがいつなのか。わかってないとハマりそう。

ccache自体の仕組み

このツールはコンパイラがソースコードをコンパイルする際の処理に割り込み、コンパイル時に固有であるべき各種データのハッシュ値を生成する。この付加的な処理により、概ね1度目のコンパイルはキャッシュを実行しない場合に比べ、コンパイルに時間がかかる。2度目以降のコンパイルでは再度ハッシュを生成し、その値がキャッシュデータのものと一致するかチェックする。一致すればccacheはコンパイラにコンパイルを指示する代わりにキャッシュされたデータを書き出す。一致しなければ、コンパイル処理はコンパイラに渡される。

https://ja.wikipedia.org/wiki/Ccache

ccache自体はソースコードの変更を検知しませんが、ビルドシステムと組み合わせることで、ソースコードの変更を適切に処理し、キャッシュの利用を最適化することができます。

ChatGPT

ccache actionの仕組み

In a nutshell, the .ccache folder is configured in the runner path and the folder is persisted and reloaded using cache. For more details see: https://docs.github.com/en/free-pro-team@latest/actions/guides/caching-dependencies-to-speed-up-workflows.

結論

➔ ソースコードに変更があればハッシュ値が変わり、ちゃんとコンパイルされると思われる。ソースコードに変化がない場合のコンパイル時間が短縮されそうでいいね。