如何分析 AngularJS 组件的性能基准?

2024-03-22

作为一项要求,我必须根据模拟数据分析几个 AngularJS 组件(例如 ng-grid、IE8、Chrome 和 FF 中的数据表)的性能基准。我有模拟数据。

现在,当使用 IE8 Profiler 时,我得到了几个函数的时间(毫秒)。根据 AngularJS 调用结构,应该$digest时间(包含时间,根据 IE8 分析器)反映页面的加载时间,或$digest & $apply?我是 AngularJS 的新手,所以对这些概念的解释会很好!


请注意,调用 $apply 将触发 $rootScope 上的 $digest,这意味着 $digesting 所有子作用域。

$apply 函数本身相对较轻(您可以在角度源中检查它)。在 $digest 期间评估观察者和比较值(脏检查)的过程可能会变得昂贵。因此,迄今为止的性能测试一直集中在测量 $digests 上。一些例子:

AngularJS 中的数据绑定如何工作? https://stackoverflow.com/questions/9682092/databinding-in-angularjs/9693933#9693933(见米斯科的回答)

如何衡量 AngularJS 应用程序摘要周期的性能? https://stackoverflow.com/questions/23066422/how-do-i-measure-the-performance-of-my-angularjs-apps-digest-cycle

http://blog.scalyr.com/2013/10/angularjs-1200ms-to-35ms/ http://blog.scalyr.com/2013/10/angularjs-1200ms-to-35ms/

这是对 $apply 和 $digest 之间差异的很好解释:http://www.sitepoint.com/understanding-angulars-apply-digest/ http://www.sitepoint.com/understanding-angulars-apply-digest/。相关摘录:

$digest:

$digest 循环是通过调用 $scope.$digest() 开始的。假设您通过 ng-click 指令更改处理函数中的作用域模型。在这种情况下,AngularJS 通过调用 $digest() 自动触发 $digest 循环。当 $digest 周期开始时,它会触发每个观察者。这些观察者检查示波器模型的当前值是否与上次计算的值不同。如果是,则执行相应的监听函数。因此,如果视图中有任何表达式,它们将被更新。除了 ng-click 之外,还有其他几个内置指令/服务可以让您更改模型(例如 ng-model、$timeout 等)并自动触发 $digest 周期。

$apply:

AngularJS ...将仅考虑在 AngularJS 上下文中完成的那些模型更改(即更改模型的代码包装在 $apply() 内)。 Angular 的内置指令已经做到了这一点,因此您所做的任何模型更改都会反映在视图中。但是,如果您更改 Angular 上下文之外的任何模型,则需要通过手动调用 $apply() 来通知 Angular 更改。这就像告诉 Angular 你正在更改一些模型,它应该触发观察者,以便你的更改正确传播。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何分析 AngularJS 组件的性能基准? 的相关文章

随机推荐

  • 正则表达式.test

    var regExpression a zA Z0 9 line 2 var regExpression a zA Z0 9 line 3 alert regExpression test 11aa 上面的代码工作正常 但是如果我们用第 3
  • 我们可以使用具有相同字段名的 group by 和 where 条件吗

    我有一个要求 比如必须提取用户选择的日期范围内的所有记录 选择从 2011 年 1 月 15 日到 2011 年 8 月 20 日开始的所有员工并按日期分组 我应该如何为此编写 SQL 查询 SELECT FROM employees WH
  • Matlab:从命令窗口重命名工作区元素?

    Matlab 的 GUI 允许我通过右键单击元素并选择 重命名 选项来重命名工作区中的任何元素 是否也可以从命令窗口执行此操作 这些是您可以轻松亲自测试的事情 并且您应该这样做 这是学习 发现的最佳方式 无论如何 答案是否定的 您不能从命令
  • 为什么具有非常高索引号的 JavaScript 数组会导致崩溃/减慢/麻烦?

    基本上破坏我的 Node js Express 服务器的代码是这样的 resultArr resultArr test resultArr test 2015073012 someObject 当我将其更改为此时 它运行没有问题 resul
  • 大量 XML 编辑

    我需要将一个中等大小的 XML 文件加载到内存中 对该文件进行多次随机访问修改 可能是数十万次 然后将结果写入 STDIO 大多数这些修改将是节点插入 删除 以及文本节点内的字符插入 删除 这些 XML 文件足够小 可以放入内存 但也足够大
  • 使用 dplyr 将一个 data.frame 的输出通过管道传输到另一个 data.frame

    我有两个 data frames 一个查找表 它告诉我一组中包含的一组产品 每组有at least类型 1 和类型 2 的一种产品 第二个 data frame 告诉我有关交易的详细信息 每笔交易可以有以下产品之一 a 唯一的产品s来自其中
  • Elastic Beanstalk -> 使用 Grails 的 RDS 连接错误

    我正在将 Grails 应用程序部署到 Amazon Web Services Elastic Beanstalk 并利用 RDS 我正在使用 Grails Spring Security RDS 表 该应用程序似乎工作正常 RDS 中的登
  • Flutter SDK 使用哪个渠道?

    预览版 1 的公告位于 宣布 Flutter 发布预览 1 Flutter Medium https medium com flutter io flutter release preview 1 943a9b6ee65a 下载 Flutt
  • 如何在 R 中进行条件“左连接”?

    我发现自己在 R 中多次执行 条件左连接 用一个例子来说明 如果您有两个数据框 例如 gt df a b 1 1 0 2 2 0 gt other df a b 1 2 3 目标是最终得到这个数据框 gt final df a b 1 1
  • 如何在另一个函数中使用 calc()

    是否可以使用calc CSS 函数内部 例如transform or translate 我似乎无法让它发挥作用 这是一个演示 大家可以玩一下 http jsfiddle net qdJwY 1 http jsfiddle net qdJw
  • 如何在 Ruby 中使用条件运算符 (?:)?

    条件运算符 在 Ruby 中使用 例如 这是正确的吗 它是三元运算符 http en wikipedia org wiki Ternary operation 其工作方式与 C 中类似 不需要括号 这是一个表达式 其工作原理如下 if th
  • C# ClickOnce 应用程序的“添加或删除程序”图标

    我已经尝试过Stack Overflow问题中的解决方案 添加或删除程序 中 ClickOnce 应用程序的自定义图标 https stackoverflow com questions 10927109 icon for click on
  • 有什么好的可视化 HTML5 编辑器或 IDE? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 看起来 Dreamweaver CS5 将在几年内 实际上是几周 尝试使 HTML5 变得更加流畅 似
  • Rails:嵌套资源冲突,如何根据调用的路由确定索引操作的范围

    假设您有两条定义的路线 map resources articles map resources categories has many gt articles 两者都可以通过助手 路径访问 articles path articles c
  • 切换列表字典中的键和值

    大家好 Stackoverflow 我有一个嵌套字典 其中列表作为值 我想创建一个字典 其中所有列表条目都将其相应的键作为值 举例时间 what I have dict1 A 1 2 3 B 4 5 6 C 7 8 9 what I wan
  • 检测请求是否是 ESI - Symfony2

    这可能是不可能的 如果是这种情况 那么我将不得不寻找其他解决方案 所以如果无法完成 请告诉我 我知道我可以获得请求类型 即 1 主请求或 2 子请求 但是有没有办法检测该请求是否是 ESI 请求 我的理解是ESI永远是一个子请求 但是有很多
  • “无法加载配置中指定的 X.509 证书身份”

    我将工作中的 WCF 服务从我的开发环境转移到 QA 环境 包括证书 根授权 根身份验证撤销列表 服务证书 包括其 PK 之后 我使用 FindPrivateKey 找到了私钥 并授予所有相关帐户在文件系统级别访问私钥文件的完全权限 我的应
  • 使用 jq 解析嵌套 json

    我正在解析嵌套的 json 以从 json 响应中获取特定值 json响应如下 custom classes 2 images classifiers classes class football score 0 867376 classi
  • 错误:无法为具有多个返回值的查询创建 TypedQuery

    我尝试用java和jpa来实现searchBook功能 我有两门课 即媒体课和图书课 书籍延伸了媒体 我将数据保存在不同的表中 我尝试从下面的查询中选择数据 TypedQuery
  • 如何分析 AngularJS 组件的性能基准?

    作为一项要求 我必须根据模拟数据分析几个 AngularJS 组件 例如 ng grid IE8 Chrome 和 FF 中的数据表 的性能基准 我有模拟数据 现在 当使用 IE8 Profiler 时 我得到了几个函数的时间 毫秒 根据