Skip to content

Instantly share code, notes, and snippets.

@Glavo
Created October 15, 2021 05:44
Show Gist options
  • Save Glavo/a734e0f579d4791ab5ee193da60e7466 to your computer and use it in GitHub Desktop.
Save Glavo/a734e0f579d4791ab5ee193da60e7466 to your computer and use it in GitHub Desktop.
Task TimingsListener Kotlin DSL
// Log timings per task.
class TimingsListener : TaskExecutionListener, BuildListener {
private var startTime: Long = 0L
private val timings = mutableListOf<Pair<Long, String>>()
@Override
override fun beforeExecute(task: Task) {
startTime = System.nanoTime()
}
@Override
override fun afterExecute(task: Task, taskState: TaskState) {
val ms = TimeUnit.MILLISECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS);
timings.add(ms to task.path)
task.project.logger.warn("${task.path} took ${ms}ms")
}
@Override
override fun buildFinished(result: BuildResult) {
println("Task timings:")
for (timing in timings) {
if (timing.first >= 50) {
println("%7sms %s".format(timing.first, timing.second))
}
}
}
override fun projectsEvaluated(gradle: Gradle) {}
override fun projectsLoaded(gradle: Gradle) {}
override fun settingsEvaluated(settings: Settings) {}
}
gradle.addListener(TimingsListener())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment