剖析IE浏览器子系统的性能权重

来源于InfoQ:

微软IE开发团队性能主管Jason Weber在一篇博 文中介绍了IE浏览器的各个子系统,并通过实验数据展示了不同网站对浏览器子系统的性能影响和权重,InfoQ中文站对相关内容做了整理,希望对 浏览器开发人员和Web应用开发人员有所帮助。

Jason Weber指出,所有现代浏览器从概念上讲都是类似的。以IE为例,它由11个核心子系统组成:

JasonWeber_PerfProfiling_1.png

图1. IE子系统(来源:IE博客,下同)

Networking——负责客户端与服务器端的所有通信,包括Web内容的本地缓存。它通常受制于用户网络环境的性能。

HTML——负责解析HTML文档并创建HTML结构化数据等。

CSS——负责解析CSS并创建CSS结构化数据。

Collections——存储和访问HTML文档中的元数据,如文档头部的描述信息等。

JavaScript—— 执行JavaScript代码,它也是最为人所知的子系统。

Marshaling——因为大多数JavaScript引擎没有直接集成到浏览器中,所以浏览器和JavaScript引擎之间存 在一个通信层,这就是marshaling子系统。

Native OM——JavaScript通过DOM API与HTML文档交互,提供这些API的就是Native OM系统,能够访问和处理文档。

Formatting——负责将style应用到文档中。

Block Building——负责构建显示给用户的矩形块(CSS基于块布局),包括块尺寸等。

Layout——负责布局经过Formatting和Block Building子系统处理后的Web内容和块结构。

Rendering——负责把最终内容渲染给用户。

为了分析不同网站对浏览器子系统的各种性能影响和权重,IE性能团队选取了两种类型的网站进行实验。由于Networking子系统的性能与客户的 环境息息相关,所以不将其权重纳入评估结果中。

新闻网站

采用IE 8访问全球五大新闻网站的首页,性能结果如图2所示:

JasonWeber_PerfProfiling_2.png

图 2. IE 8子系统针对5大新闻网站的性能结果

由图2可以看出,虽然同为新闻网站,但是由于Web开发人员对网站性能的关注和优化程度不同,IE 8子系统对5个首页的性能反馈都不一样。1号网站的主要性能消耗在JavaScript子系统上,2号网站的重头戏则是Marshaling子系统。3号 网站显然遵循了性能最佳实践经验,所以消耗时间最短;而4号网站则是反面典型,加载时间达到了3.7秒。

如果把这5大新闻网站对IE 8子系统的影响权重综合在一起,就可以得到针对新闻网站的子系统性能影响权重,如图3所示:

JasonWeber_PerfProfiling_3.png

图 3. 新闻类网站对IE 8子系统的性能影响权重

上面这张图对于Web开发人员特别是新闻类网站工程师很有参考价值,排在前三位的子系统分别是JavaScript (29%)、Marshalling(18%)和Rendering (17%)。

AJAX网站

采用IE 8访问全球AJAX用户体验最丰富的25家网站(包括Facebook、Gmail和Hotmail等),性能结果如图4所示:

JasonWeber_PerfProfiling_4.png

图 4. AJAX类网站对IE 8子系统的性能影响权重

与新闻类网站相比,某些子系统如HTML、CSS和JavaScript权重相对较轻,而另外一些子系统如Formatting、Layout、 Block Building和Rendering(31%)则比较重要。乍一看,这种结果可能有些意外。不过,Jason Weber分析了原因:

当JavaScript代码执行时,浏览器需要利用几乎全部子系统来配合相应的变化并最终显示给用户,而这些过程的性能消耗通常 要比执行JavaScript代码本身要昂贵得多。

Jason Weber最后指出,分析IE浏览器子系统性能权重的目的在于确保让IE 9或者更新版本在现实世界中运行速度更快。在过去几个月里,IE开发团队针对上面的性能实验结果采取了若干子系统的性能改进,包括硬 件加速渲染、编 译JavaScript和原 生内部集成JavaScript等。

对于浏览器子系统的性能权重分析具有很高的参考价值,一方面可以帮助浏览器开发人员了解现实世界对自身产品的反馈,评估各个子系统的功能优先级;一 方面能够帮助Web开发人员清楚其应用对浏览器的性能压力,采取合适的优化调整。

转载于:https://www.cnblogs.com/TylerCui/archive/2011/02/21/1959851.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每年通过率仅1%的“天才考试”,中国到底应不应该学?

▲ 点击查看说起世界上最顶尖的基础教育,新加坡绝对能占一席之地。香港首富李嘉诚是这么评价新加坡教育的:“新加坡采用的教育体系源于英国传统的教育制度,它的私立、私立教育院校及一流大学和国际教育机构全球卓越。”李嘉诚甚至在长孙还没多…

C# VS生成后事件命令行

“ 引言部分,总领全篇文章的中心内容。”01—前言Visual Studio中,可以在项目-》属性-》生成事件-》生成后事件命令行(O):中设置项目生成后执行的脚本,从而实现项目文件生产后的自动部署。如下图所示:02—自…

mysql binlog 大数据_后起之秀 | MySQL Binlog增量同步工具go-mysql-transfer实现详解

一、 概述工作需要研究了下阿里开源的MySQL Binlog增量订阅消费组件canal,其功能强大、运行稳定,但是有些方面不是太符合需求,主要有如下三点:需要自己编写客户端来消费canal解析到的数据server-client模式,需要同时部…

如何备份服务器日志到其他服务器_KIWI Syslog日志服务器搭建及配置

认地,kiwi使用UDP 514端口接收日志数据,安装成功后即可接收日志使用命令netstat –ano查看服务器监听状态,如果服务没起来,则重新启动服务Kiwi Syslog Daemon任务:把当天的日志保存在G:event,历史日志保存在…

Dapr牵手.NET学习笔记:状态管理进阶(二)

为了防止并发对数据修改造成差异,dapr使用了etag标签来作为版本号,对数据修改进行验证。下面是对etag的一个demoappsettings.json中的url配置"StateUrl": "http://localhost:3500/v1.0/state/statestore"在PaymentSystem项目中添加两…

这三位同学的名字绝了!笑得肚子疼......

1 这三位同学的名字绝了!▼2 我是一只小海豹我在假装跷跷板▼3 单身狗受到暴击▼4 小宝宝真可怜打针打出了条件反射▼5 每生成一个验证码都有一位程序员......▼6 虽然腿短但是人家跑得快啊▼7 内容引起极度舒适▼你点的每个赞,我都认真当成了喜欢…

从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

从hadoop框架与MapReduce模式中谈海量数据处理前言几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,认为它们非常是神奇,而神奇的东西常能勾起我的兴趣,在看过介绍它们的文…

WPF过渡面板

WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看,谢谢~。 前言效果投稿来源于-郑竣僖 QQ:41130958301—效果预览效果预览(更多效果请下载源码体验):一、Tra…

UScript中的Pow函数

这些天越来越发现数学的重要和妙趣了, 由于一些地方需要使用指数次幂来实现更好的效果, 想当然地去找pow函数,把Object和Actor翻了个底朝天 。。。 结果可想而知, 也正好,尝试了一把UScript和C的混编,但搜一…

哪些才是对女朋友的有效关心,来学习一下~

1 这本书真好,在哪里才能买得到呢?2 求求你,不要抢我的小毛虫!3 所有的乘客请系好安全带4 小朋友非常可爱了5 字幕组真的尽力了!6 学习了7 10月16日,平安南京 根据真实接警经历,发布一则警示案例…

fabric 转账_Fabric 学习笔记-架构初探

本文介绍了Fabric的架构,以及通过一个简单的Demo来熟悉整个交易流程。Hyperledger fabric V1.0的架构如下图所示:application提供各种语言的SDK接口。membership也就是fabric-ca提供成员服务,用来管理身份,提供授权和认证。peer负…

多个goruntine 性能变慢_提高 JavaScript 性能的 12 个技巧

作者丨Liz Parody在创建 Web 应用程序时应始终考虑性能。为了帮助你开始,本文列举了有效提高应用程序性能的 12 种方法。性能是创建网页或应用程序时最重要的一个方面。没有人想要应用程序崩溃或者网页无法加载,或者用户的等待时间很长。根据 Kissmetric…

#celery#周期性任务

2019独角兽企业重金招聘Python工程师标准>>> 玩了一个星期的clannad,是时候干点事了。 折腾了下celery周期性任务: celery提供了一个叫celery beat的服务,用于定时驱使worker执行任务。也就是说,如果本地没有活动的wor…

WTMPlus 1.1 发布

点击上方蓝字关注我们1.1版本WTMPlus上线一个多月以来,得到了越来越多用户的喜爱。虽然1.0版本还有不少问题,但是它的核心理念和功能受到了用户的认可。1.1版本修复了大量用户反馈的易用性的问题和系统Bug,并且加入了强悍的图表工具。图表编辑…

4部“教材级”纪录片,有生之年必看系列!

全世界只有3.14 % 的人关注了爆炸吧知识纪录片是以真实生活为创作素材,以真人真事为表现对象,并对其进行艺术的加工与展现的,以展现真实为本质,并用真实引发人们思考的电影或电视艺术形式。好的纪录片就像打开了一扇新世界的大门&…

Java 操作POI 之复制sheet页

2019独角兽企业重金招聘Python工程师标准>>> 来点干货直接上代码,就不细说了 package com.qs.web.tools.core.excel; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.apache.poi.hssf.us…

Serverless 落地实践

.Net Core Serverless初体验什么是ServerlessServerless 是一个当今软件世界中比较新的话题。它并没有一个普遍公认的权威定义,每个人每个企业对它的解释可能都有不同,而 Serverless 正是在这种情况下不断发发展的。但是就算如此,有一些 Serv…

KOFLive Beta Daily-Scrum 9

组 员今天的工作进 度问 题明天的计划田 飞Work Item 38911:角色四照片拍摄 Work Item 38897:键盘输入人物四的图片已经导入,键盘三个连键检测完成还剩最后一个连键的检测Work Item 38911:拍摄人物角色五付 浩Work Item 37741:游戏主模块 Work Item 3889…

Dapr + .NET 实战(十-终篇)K8S运行Dapr

工作原理为了实现在k8s上安装Dapr,Dapr需要部署dapr-sidecar-injector、dapr-operator、dapr-placement和dapr-sentry服务。 dapr-operator: 管理组件(state stores, pub/subs, etc.)dapr-sidecar-injector: 将 Dapr 注入 annotated pods,并添加环境变量…

mvc control 请求两次问题

今天在做项目时&#xff0c;突然发现一个mvc 的control中action被执行了两次&#xff0c;最终发现是由于favicon.ico导致的。问题代码&#xff1a; <link rel"shortcut icon" href"Images/wangyi.ico" type"image/x-icon" />,最终改成了 &…