$watch 的实现原理和性能分析

  • 只有双向绑定的 scope 才会被加入$watch队列,或者手动绑定$watch$scope
  • 所有放在 $scope 中的变量或函数都被加入到了$watch队列当中,每次只要$scope中的一个变量的值发生变化,Angular就会自动调用$apply或者$digest来把所有在$watch队列中的变量或函数都执行一遍,然后把当前值和上一次的值就行比较,如果有变化,就会在执行一遍(一直循环,最多11次),知道没有变化就会停止
  • 任何事件如果调用Angular的context中的函数之后,都会对$watch队列进行对比执行,不管有没有对$scope进行改变,

例如:ng-click 执行了一个函数 $scope.say = function(){ \nothing }, 在这个函数里面没有任何操作,但还是会执行$watch队列

ng-repeat 的原理和性能问题

  • ng-repeat循环中的每一个item都会建立一个单独的scope并对每个scope中的model进行$watch.
  • 这样的话如果有200条数据,每条数据中5个属性要被$watch, 那么就是 200 * 5次,又因为每次脏数据检测至少都需要执行两次来保证所有变化都被应用,那么就是 200 * 5 * 2, 在加上单独的 ng-repeat一个和其他的modeln个,就是 200 * 5 * 2 + 1 + n, 如果这个数据超过2500的话页面就会变得很慢了
  • 所以如果ng-repeat的数据只是用来展示不需要对其进行操作的话就可以取消$watch绑定,可以使用一个Angular的第三方directive: Bindonce.

转载于:https://www.cnblogs.com/wxlevel/p/7454033.html

angular的性能分析 -随记相关推荐

  1. code blocks代码性能分析_记一次Python Web接口优化,性能提升25倍!

    背景 我们负责的一个业务平台,有次在发现设置页面的加载特别特别地慢,简直就是令人发指 让用户等待 36s 肯定是不可能的,于是我们就要开启优化之旅了. 投石问路 既然是网站的响应问题,可以通过 Chr ...

  2. 记一次Arthas火焰图(Flame Graph)性能分析实战

    前言 最近负责的一个核心服务,TP999总是被上游吐槽,失败率也比较高.TP999达到了200ms+,最终通过arhas的火焰图,直接定位到了耗时的原因,是由于对象多余的序列化和反序列化导致的,去掉后 ...

  3. App性能分析数据监控

    App性能分析数据监控 APP的性能监控包括: CPU 占用率.内存使用情况.网络状况监控.启动时闪退.卡顿.FPS.使用时崩溃.耗电量监控.流量监控等等. 文中所有代码都已同步到github中,有兴 ...

  4. windows服务器性能分析方法小结,Windows服务器性能分析方法小结

    Windows服务器性能各种指标的分析 事情的起因是BOSS/CRM系统的扩容.我所要做得,仅仅是写一份CRM Windows服务器的性能分析,不过这足以让我一筹莫展了,毕竟当时对主机性能分析的认识, ...

  5. 基于matlab的64QAM,通信调制体制设计之64QAM性能分析MATLAB仿真及代码

    通信调制体制设计之64QAM性能分析MATLAB仿真及代码 通信调制体制设计之64QAM性能分析MATLAB仿真及代码 任务背景 弗雷泽岛旅游经理在审查您之前建立无线链路任务的解决方案时,正在研究使用 ...

  6. 最好最坏和平均情况下的性能分析

    最好最坏和平均情况下的性能分析 现在有一个问题,对于所有的输入来说,前面得到的结果是否都成立呢?第二种排序法在少量字符串的时候性能也许是最好的.但是,输入数据有很多地方可能变化: 输入数据可能有1 0 ...

  7. linux 解析pdf下载工具,Linux高级系统级性能分析工具-perf.pdf

    Linux高级系统级性能分析工具-perf Linux 的系统级性能剖析工具‐perf (二) 承刚 TAOBAO  Kernel Team chenggang.qin@ 第三章  Perf top ...

  8. HashMap 的 7 种遍历方式+性能分析!

    随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从性能. ...

  9. 算法学习四:算法性能分析理论基础——函数增长与渐进分析

    算法学习四:算法性能分析理论基础--函数增长与渐进分析 在算法性能分析过程中,特别是在算法运行效率分析中,我们经常使用渐渐分析法,它使我们在分析算法性能时不必纠结于不同硬件平台的差异性,着重考虑算法的 ...

最新文章

  1. Python 笔试面试合集
  2. springcloud @EnableDiscoveryClient注解作用
  3. VHDL-std_logic_vector转换为integer注意
  4. Jquery1.6版本后attr的变化
  5. 如何使用QuickConnect远程访问Synology NAS
  6. react学习(15)---antdesign form两种验证
  7. 人生只有两条路径才能实现财富自由
  8. python怎么直接操作git_基于python实现操作git过程代码解析
  9. QT5.1 调用https
  10. 理解Android Framework
  11. C语言———不定参数标准库 stdarg.h
  12. OpenCV_(Using GrabCut extract the foreground object) 使用 GrabCut 算法提取前景物体
  13. SqlServer 备份数据库语句
  14. 数字电路基础知识——时序逻辑电路之存储器(SRAM、DRAM、ROM)
  15. 台达DVP系列PLC以太网通讯方案
  16. 2022年国家法定节假日配置MySql
  17. jquery中判断元素是否含有某个类名
  18. OpenGL中显示背景贴图
  19. c语言实现cgi之cgic库使用
  20. 【年度总结】2021 邂逅前端,入坑算法

热门文章

  1. Linux-C实现GPRS模块发送短信
  2. SHA-1算法的C语言实现(源码来自网络)
  3. React开发(132):ant design学习指南之form中控制展开和关闭逻辑
  4. [css] 如何给段落的首行缩进?
  5. [css] 使用纯css来创建一个滑块
  6. [vue-element]ElementUI的穿梭组件如果数据量大会变卡怎么解决不卡的问题呢?
  7. 前端学习(2532):Vuex中action
  8. 前端学习(2237):react实现疫情数据
  9. 前端学习(2048)vue之电商管理系统电商系统之实现首页内容自定制
  10. 前端学习(2041)vue之电商管理系统电商系统之只是在发布阶段生效