Created
October 15, 2021 05:44
-
-
Save Glavo/a734e0f579d4791ab5ee193da60e7466 to your computer and use it in GitHub Desktop.
Task TimingsListener Kotlin DSL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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