gradle が遅いなと思ったら gradle-profiler を使おう
https://github.com/gradle/gradle-profiler
gradle の処理がなんだか遅いなってときがある。
サッとググッて出てくる情報だと、--profile つけろとか、--scan 使えとか書いてある。
--profile は情報がざっくりしすぎていてよくわからないし、--scan は gradle.org に情報がアップロードされちゃうのがちょっと。。
--profile
って結局は、「どのタスクが遅いか」はわかるんだけど、どのプラグインが遅いか、とかはよくわからなかったりするんだよね。
gradle-profiler を使うと、どのプラグインが時間食ってるか、みたいなことをサッとしれて便利。 何回か動かしたベンチマークの結果をレポートにまとめてくれるので、gradle の速度チューニングした結果の評価にも便利。
benchmark の取り方
$ gradle-profiler --benchmark --project-dir . assemble
とかやって動かす。
数回試行された結果が以下のような HTML で生成される。
profiling の仕方
jfr や async-profiler をかけながらgradleを動かせるのも便利すぎる。
なんだか最近gradle遅いな、と思ったらgradle-profilerかけると良いと思う。
gradle-profiler --profile async-profiler --project-dir . assemble
async-profiler 以外にも jfr や YouProfiler などを使うことも可能。
以下のような見慣れた flamegraph を得ることができる。
これをやった結果、spring の dependencyManagement に個別の dependency をいっぱい指定すると遅いから platform project 作ったほうが良さそうだなぁ、とかそういうことがわかったりする。
Published: 2023-09-18(Mon) 01:43