Skip to content

Commit bbd1742

Browse files
committed
[1.7.0-feature] gradle编译期间的耗时统计
1 parent cb0e9f8 commit bbd1742

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

compileTimeCost.gradle

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ gradle.afterProject { project ->
2828
configList.add("$project 耗时:${System.currentTimeMillis() - begin} ms")
2929
}
3030

31-
def beginOfProjectExecute
31+
def beginOfProjectExecute = 0L
3232
gradle.taskGraph.whenReady {
3333
println '----------------------配置阶段----------------------'
3434
configList.forEach { configStr ->
3535
println(configStr)
3636
}
37-
println '配置阶段,总共耗时:' + (System.currentTimeMillis() - beginOfConfig) + 'ms'
37+
println "配置阶段,总共耗时:${(System.currentTimeMillis() - beginOfConfig)} ms"
3838
println '----------------------配置阶段----------------------'
3939
beginOfProjectExecute = System.currentTimeMillis()
4040
}
@@ -48,14 +48,20 @@ gradle.taskGraph.beforeTask { task ->
4848
task.ext.beginOfTask = System.currentTimeMillis()
4949
}
5050
task.doLast {
51-
taskList.add("$task 耗时:${System.currentTimeMillis() - task.beginOfTask} ms")
51+
/**
52+
* 1、在Gradle中,task实例是通过实现task的实现类来创建的。当在Gradle文件中定义一个task时,Gradle会根据定义的task的名称和类型来创建对应的task实例。
53+
* 2、对于task实例,Gradle会为其生成一个代理类,这个代理类是task实例的包装类,它实现了所有task的接口,并包含了task的所有属性和方法。这个代理类的名称通常是task的实现类名称加上'_Decorated',例如,如果task的实现类名称为MyTask,那么代理类的名称就是MyTask_Decorated。
54+
* 3、当在Gradle文件中引用task实例时,实际上是在引用这个代理类,而不是task实现类本身。代理类负责调用task实现类中的方法和属性,并将结果返回给Gradle。这样做的好处是,代理类可以提供一些附加功能,例如缓存task的输出结果或拦截task的方法调用。
55+
* 因此,当在Gradle文件中使用task.class.name来引用task实现类时,实际上是引用了task的代理类名称,这个代理类包装了task实现类,并提供了额外的功能和接口。
56+
*/
57+
taskList.add("$task : ${task.class.name - '_Decorated'} :耗时${System.currentTimeMillis() - task.beginOfTask} ms")
5258
}
5359
}
5460
gradle.buildFinished {
5561
println '----------------------执行阶段----------------------'
5662
taskList.forEach { taskStr ->
5763
println(taskStr)
5864
}
59-
println '执行阶段,总耗时:' + (System.currentTimeMillis() - beginOfProjectExecute) + 'ms'
65+
println "执行阶段,总耗时:${System.currentTimeMillis() - beginOfProjectExecute} ms"
6066
println '----------------------执行阶段----------------------'
6167
}

0 commit comments

Comments
 (0)