虽然启动总耗时包含下载、JS 注入和初次渲染的阶段,但性能数据中的**「启动总耗时」与「下载耗时 + JS 注入耗时 + 初次渲染耗时」之间并不存在必然关联**。原因有几方面:
- 这几项指标的粒度是不一致的:启动总耗时是以一次冷启动为粒度,下载耗时是以代码包为粒度,JS 注入耗时是以文件为粒度,初次渲染耗时是以页面为粒度,之间并不是一对一的。
- 下载、JS 注入、初次渲染都不仅发生在启动阶段。
- 下载也可能发生在页面切换、分包预下载的场景。启动过程中不一定会下载代码包,也不一定只下载一个代码包。
- JS 注入也可能发生在页面切换和小程序运行过程中。启动过程中可能会注入一个或多个文件,且受到缓存等维度的影响。
- 首次渲染也可能发生在页面切换过程中,也受到缓存等维度的影响。
- 这几个耗时本身是平均值,涉及不同的维度,没有对应关系,求和无意义。
- 下载耗时、JS 注入耗时、初次渲染耗时只是提供给开发者参考优化每个阶段的耗时,并不能用来计算与启动总耗时的关系。
- 启动过程中,除了这三部分耗时,某些条件下也存在小程序相关信息和运行环境准备的耗时。这部分耗时也与「启动总耗时 - 下载耗时 - JS 注入耗时 - 初次渲染耗时」没有必然关系。