gpt4 book ai didi

javascript - angular.equals() 占用了 50% 的执行时间

转载 作者:行者123 更新时间:2023-11-30 08:28:09 25 4
gpt4 key购买 nike

正如大多数人在 AngularJS 职业生涯中所做的那样,我在我的应用程序中遇到了性能瓶颈,我一直在使用 Chrome 中的分析器来尝试找出原因。

顺便说一句;我已经完成了我认为对 AngularJS 应用程序进行正常优化的工作,而且我没有过多的观察者 [~300]。不过,我确实使用 Angular Google map 和 Angular Material。

分析器中出现的主要内容是 AngularJS 中名为 equals 的函数,它占用了 50% 的时间。有趣的是,虽然我没有在我的代码中使用 angular.equals,所以我希望它有一些内部 Angular 进程(摘要循环?)我使用的库,它们很少使用 .equals()

任何人都可以给我一些提示,告诉我在哪里查看或查看什么类型的代码,以找出导致这些过度相等性检查的原因吗?

enter image description here

最佳答案

如堆栈跟踪所示,equals() 在评估所有观察者时从 $digest 递归调用。

当您使用 objectEquality 选项时,Watchers 将使用 angular.equals(),如 documentation 中所示:

When objectEquality == true, inequality of the watchExpression is determined according to the angular.equals function. To save the value of the object for later comparison, the angular.copy function is used. This therefore means that watching complex objects will have adverse memory and performance implications.

所以我想说最简单的答案是要么使用更少的观察者,要么更谨慎地使用 objectEquality 选项。

关于javascript - angular.equals() 占用了 50% 的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41999574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com