00:00
大家继续观看上硅谷格雷度技术视频,这节课我们继续讲解借助于格豆生命周期中的钩子函数帮我们达到一些想要的功能,比如我们可以借助于生命周期中所涉及到的钩子函数来统计各个阶段的耗时。比如说,我们来统计初始化阶段、配置阶段或者执行阶段,它各自消耗了多长时间。来,我们直接把这些代码给大家复制过来。然后放在咱们这个setting gradeid文件里边。OK啊,然后我们把根工程底下的task a。啊,以及sub product里边的task b都已经删除了,然后咱们这里只保留了sub product02里边的task c和task d。还有这些。钩子函数。来吧,首先我们来统计一下这个初始化地段它的耗时。初始化阶段耗时。它是在。
01:03
Products loaded这个钩子函数里边完成的,然后咱们让此时此刻的时间减去。啊,加载这个脚本的时间。啊OK啊,就是用此时此刻的时间减去啊,一开始时间,一开始时间咱们是在上面定义的。注意啊,咱们这里统计了初始化阶段的耗时,仅仅是加载setting文件初始化阶段耗时,并没有统计这个加载in点的文件。啊,你要想统计它的话,你就把这个起始时间变量定义在。这个初始化脚本里边也是可以的。就是这个。接着往下走。接着咱们也在每个。啊,这个product执行之前,咱们也又在它的before product里边记录了一下这个起始时间,记录的时候,咱们这里是先创建了一个map。然后每一次往那个麦坡里边。
02:01
放一个键值,对,其中键就是当前product值是此时此刻的时间。然后咱们又来到了。每一个product对应的after product这个钩子函数。然后在这个钩子函数里边,咱们获取。当前product的名字,然后拿着当前的名字和整个项目的。Product就是和这个做一个对比。啊,如果我们发现。当前product的名字和路根目录的校名一致,说明它是一个根工程。否则。就是当前工程的名字和。跟工程的名字不一致,就是说明它是子工程。如果是。根工程的话,咱们就在控制台打印根工程啊。他这个耗时是多少。然后如果是子工程呢,咱们就打印子工程,它在配置一二的耗时。无论是根工程还是子工程,都是用此时此刻的这个时间,就是after product里边这个时间,然后减去啊,Before product里边这个时间。
03:05
是吧,Before里边时间咱们是从map里边取的,根据这个咱们放的时候是根据一个工程作为件往里放的,现在取的时候也是根据一个工程作为件从里边取的。OK。然后,而且咱们在这里,当所有product都执行完毕之后,他一定会执行一个问ready这个钩子函数,咱们就在问这个钩子函数里边统计了一下整个配置阶段。它的耗时,我们就拿着此时此刻的时间减去。第一个product。他的这个起始时间。是吧,在before product这里啊,减去这个时间。OK啊,然后接着啊,我们就进入到了执行阶段,在执行阶段。啊,咱们这里统计了每个task它消耗的时间。每个task消耗的时间就是用它的。
04:02
就是用每个task的do last,此时此刻,时间减去do first。对应的那个时间。是吧,就能得到每个task。每个任务所花费的时间,最后咱们这里给大家统计了整个执行阶段消耗的时间,就用此时此刻的时间减去啊。就是问ready里边啊,减去谁啊,减去一开始进入到执行阶段。对应的那个时间啊,就是整个执行段消耗的时间。咱们这里又给大家统计了整个构建过程消耗的时间,就是用啊,此时此刻的时间减去啊。这个一开始的时间就是能统计整个构建过程所需要的时间。OK啊。这些钩子函数啊,通过这些钩子函数咱们就可以统计。各个阶段的耗时,来吧,咱们就执行一下我用great build的指令就可以了。
05:03
来,你看他的输出。来我们看一下啊,首先它统计了。根工程初始化阶段消耗的时间,还有在配置阶段啊,比如说根工程配置阶段,子工程subject product01它的配置阶段是吧,就是各个pro在配置阶段了,耗时以及整体的。耗时。嗯,零二的,然后这里应该还有一个整体的。整体的。啊,这里。而整个项目在配置阶的耗时是这些。啊,然后接着就开始进入到执行阶段,执行阶段咱们也统计了各个任务他们的耗时啊,比如说某一个任务他们的耗时是多少。啊,以及咱们在最后又给大家统计了。
06:01
这个整个执行过程中所消耗的时间。整个执行过程中所消耗的时间,以及整个构建过程中所消耗的时间。啊,这些OK啊。当然啊,咱们这个整个构建过程,它不包含咱们加载初始化脚本的这个时间。所以你会发现这个时间和下边这个时间还是有一点差距的。是吧?OK啊,行。这是利用生命周期中的钩子函数帮助我们统计啊各个阶段所消耗的时间。OK,当然咱们课件里边还给大家拓展了一个,比如说我们还可以。这个查看task的有效不幻图,这个你只需要在setting go文件中加上这一段代码就可以了,啊,说白了就是。在这个。Graph popul里边它生成的就是。Task的有效无环图。
07:00
这个代码比较简单,大家自己运行一下就可以了。
我来说两句