title: Profiling sbt builds
body: <p>I have an sbt build that takes ages. It's big and complex and it's hard to know where to start cleaning it up. It seems like sbt retains a lot of metadata about the structure of the build, with interdependencies, named tasks, scoping, and so on. With all this metadata, it seems like it would be quite easy to jump in and measure how much time each distinct task, with scope, takes. Doing this in code rather than based on log messages not only feels cleaner, but has the advantage of dealing nicely with concurrent builds and other complicated stuff that could cause the log times to be misleading.</p>
  
  <p>Are there any facilities to do this currently? It doesn't feel like something we could do in a "user" build, but perhaps an SBT plugin could hook a task starter and maintain/produce a big report of timings at the end. It would really help focus my efforts on improving the slow things without wasting time on things that happen instantly.</p>