我试图分析一个角5应用程序,以找出它在加载一些对象时性能不佳的原因。我将更好地解释它:应用程序加载一个网格,其中每个单元格都是一个对象容器。用户能够将对象从侧栏的树中拖到网格中,因此每个单元格都侦听3个事件(它们的名称来自我们正在使用的UI库):
此外,要执行其他一些操作,比如通过所有单元格查找对象,每个单元格都有3个订阅,以便在用户选择对象(用于剪切/粘贴操作)、当我们要查找对象时以及当用户加载另一个数据网格时知道。
平均每个对象网格有大约100个单元格。处理所有这些事件和订阅是不是太过分了?我有一个有60个单元格的网格,试图在表单上键入任何内容都需要永恒。
例如,要在此表单中键入“Sample”:
这个应用程序停顿了将近10秒,然后把单词中的所有字母都打印出来。为了提高应用程序的性能,所有的单元组件都使用OnPush变化检测策略。我尝试使用Google工具对应用程序进行分析,下面是在输入字段中编写“示例”的结果:
我以为这会给我一些关于表现不佳的线索,但是,根据结果,我找不出原因。
是否有更精确的工具来检查应用程序正在做什么来分析它?
我很感激任何建议,谢谢!
发布于 2018-03-19 17:01:23
问题是来自您的UILibrary的事件没有在ngZone
中运行,这导致更改检测不会被触发。应该在使用库的组件中注入ngZone
,然后调用run
函数:
constructor(readonly ngZone: NgZone) {}
onDragEnter(event: Event): void {
this.ngZone.run(() => {
// do here what ever you need to be changed
});
}
https://stackoverflow.com/questions/49368289
复制相似问题