Angular 性能 - OnPush 增加循环次数

Angular performace - OnPush increases num of cycles

我正在尝试衡量变更检测策略的性能差异。

我已经添加了 angular 分析器,并使用 Default 检查,然后将 onPush 添加到我们的大多数组件,这些是结果:(开发模式)

默认:{ msPerTick: 25+-, numTicks: 18+- } onPush: { msPerTick: 2+-, numTicks 220+- }

如您所见,msPerTick 已显着降低,但周期数增加了 10 倍。 我更改为 onPush 的组件越多,因此 ms 减少而 numTicks 增加。

我想知道这是否正常,如果不是,那是什么原因造成的?

额外的细节: angular7、 我正在使用延迟加载模块(带路由)。 app.component 采用默认策略。 我在最大的模块上检查它。 big.module 有 big.home 个组件(默认)和子组件 (onPush)

更新:我想通了,timeChangeDetection 函数运行半秒并尝试尽可能多地循环。所以想要的情况是尽可能多的 numTicks。