Mac 平台的 Chrome 比 Safari 性能更好吗?为什么用的人那么多?

普遍的感受是 Chrome 更耗电,页面滚动效能差,占用更多内存和更大的 CPU 使用率
关注者
1360
被浏览
325924
拜托,最重要的原因,难道你们不觉得Chrome真的很快吗

这里有一篇文章,来自google的程序员lya Grigorik谈Chrome的高性能网络设计(需要翻墙):
igvita.com/posa/high-pe

专业方面的优化就不在这里阐述了,可能大部分人对计算机网络原理还不是那么理解。摘一些大家能看得懂的优化:

1. Chrome's Predictor:

Chrome内置有非常强大的预测系统,当你在浏览器的地址栏上(Omnibox)一边输入网址的时候,Chrome就已经根据你的输入尝试去判断你要访问网址,并且开始加载(或者DNS解析,与其他浏览器不一样,Chrome使用的并非是系统自带的DNS解析Client,而是使用自己内置的DNS解析工具)。

所以有时候难道你们不觉得网页是秒开吗(至少我自己有这样的体会),在输入完网址敲回车的时候就能立即打开网页。因为Chrome早就猜到你要访问,已经在后台加载好了(你可以这么理解:Chrome已经为你打开了一个你想访问网站的标签页,但是暂时隐藏了,在你敲击回车的那一刹那,Chrome把它显示出来了,所以你会觉得秒开)。

既然是预测,当然不是百分之百准确的。它也会根据用户的输入不断的调整,并记录不同关键字访问站点的概率,并且这些你都可以看到,对用户是透明的:

请在浏览器中输入 chrome://predictors


然后你就能看到这样的图片(这个截图不是我个人的),右边的Confidence栏就代表了对这个关键字和用户可能访问的对应网站的概率,当然是越高越好,hit count和miss count字段的含义当然也不言而喻了

不仅仅是在地址栏输入的时候,甚至在你鼠标悬浮到某一个链接上的时候,Chrome就开始去对链接的主机进行DNS解析和TCP连接


2. Chrome目前采用的是 process-per-site模式,也就是说同一站点(可能多个tab标签)共用同一个进程(其他的模式有:一个标签使用一个进程,整个浏览器使用一个进程),这样的好处是保证了某一个站点的崩溃不会影响到其他站点。在IE下面你肯定有这样的经验:打开某个网站的时候卡住了,导致了整个IE都不能响应了。但是Chrome这么做避免了这个问题。并且多个站点共用的话能够保证建立起来传输数据的管道重复利用,不用发出新的请求,建立新的链接。

BTW:知道为什么访问一个网址为什么慢吗,时间去哪儿了吗?



大部分的时间都花在了网络请求上。这也是为什么Chrome要在网络优化上下大功夫。排名第二位的是Javascript脚本的执行。个人觉得现在的V8引擎似乎不算很大的优势了,IE也说自己的执行效率高,Safari也说自己的执行效率高。但个人没有用banchmark(性能基准测试)测过。


你们想看看自己Chrome里有关网络的一切?请在地址栏里输入:chrome://net-internals
什么DNS、Cache、Prerender(上面说的预先加载的页面)、目前可用的Socket都一览无遗。当然要你们感兴趣和看的懂才行。

暂时觉得以上两点还算比较通俗的,可以和大家分享。

注意,以上的优化方案主要存在于桌面端,而并非在移动端。移动端的浏览器架构和桌面端会有不同

最后:这一切都是需要代价的!代价就是占用内存和CPU资源!但这样就有可能拖慢你的电脑!所以见仁见智吧!

其他浏览器有没有做这方面的工作呢?我不知道,或许有吧,但是我没有找到其它浏览器优化方面的文献和资料。

给大家一些浏览器厂商自己的官方博客,每次有了更新和提升一般他们都会发布在博客上。但说实话都不如Chrome来的这么彻底、透明:

Chrome:chrome.blogspot.com/
IE:IEBlog - Site Home
Wekit:The WebKit Open Source Project

--------更新1.0:

针对楼主的几个问题回答一下:

但 Chrome for Mac 的页面滚动效能、耗电量、内存和 CPU 占用、JS 加载速度都没有 Safari 好
Chrome的确耗电量和使用内存和CPU更多,但就像我上面说的,这些消耗都是为了保证更好的浏览体验,在后台做了非常多的优化动作。IE的占用资源想必很少吧,但用IE浏览网页也一定很不爽吧

JS加载速度这个并不准确,个人理解应该为JS的执行效率。我上面也提到了,这两年IE和Safari的脚本执行引擎都有突飞猛进,在各种大会上都在展示和其他引擎执行的效率对比,并不输于Chrome。但我想说的是,其他的浏览器厂商仅仅是在这一两年追赶上来而已。如果拿倒退一些年的数据相比,Chrome还是非常有优势的,也是它因为“快”而积累了相当一部分用户的原因。

什么插件是 Chrome 独占而且不可替代不可或缺的吗

必须承认Safari的拓展一定不如Chrome丰富。但我觉得这可能和苹果没有做这方面的推广和鼓励开发有关(应该不会存在开发方面的技术问题)。其实Firefox的拓展做的非常好,相对Firefox,Chrome也只是后来居上而已,楼主可以不必纠结于Safari与Chrome,Firefox也是一个不错的选择。

--------更新2.0:

有的朋友在答案下给我留言,告诉我搜狗浏览器和Safari也有类似于预先加载的功能。我还没有去关注过,所以在文章里暂不给出肯定的回答——我相信有。其实有也并不稀奇,看这么多年的浏览器发展,不同浏览器衍生出来的优化方案都是很相似的,比如从IE8开始的Pre-loader机制(没错,这一次IE遥遥领先于其他浏览器喔):How the Browser Pre-loader Makes Pages Load Faster ;又比如使用GPU加速。

但是:所谓的优化不仅仅是这一项而已,我在开头举例的哪一篇文章中描述了非常多Chrome底层做的优化,在知乎上不是三言两语能够说清楚的,而我相信这些细节并不是大多数浏览器可以做到的;可能还涉及到Chrome架构的设计,有兴趣的同学可以看一看整个Chrome内部的架构设计文档:chromium.org/developers。其中一些机制设计是非常值得借鉴的。

Chrome的优秀也不仅仅体现在对用户的友好。如果你对google的每年I/O大会和 html5rocks.com 有关注的话,每年它们都不间断会针对开发者提出一些新的开发者工具特性。这也是其它浏览器所已不能及的。


--------更新3.0

很多朋友都提到了flash的原因,个人理解是不是Chrome内置的Flash比较占资源,而使用操作系统内的比较不占? 那么可以停用Chrome内置的flash:

请在浏览器地址栏输入 chrome://plugins/ 在打开的页面中搜索 Adobe Flash Player


把上面一个内置flash停用吧

--------更新4.0

1. 很多朋友在留言我的IE也很快呀,但请问你使用的是那个版本的IE呢?我承认IE10或者IE11或许不会比Chrome逊色,但是要知道至少在大陆境内使用率最高的仍然是IE8,IE9的市场份额甚至都不如IE6或者7,来源请参考:浏览器市场份额 ,那么你再使用IE6-8之后和Chrome对比一下吧,这应该是大部分人的体验。

2. 如果你只是做一些简单的网页浏览,比如看文章,上知乎,上百度。或许看不出什么差别,但是如果你浏览的网页是富交互类型,有非常多的脚本(甚至页面小广告),速度还是有区别的。这就好比5k的电脑和10k的电脑上网办公都没多大差别,但是玩起大型游戏来就立马见高低了。

3. 最后,各位总是谈感觉感觉感觉……我觉得咱们还是以数据说话吧,请使用这一个网站:WebPagetest - Website Performance and Optimization Test 对你浏览的网页做一些测试,可以选择不同浏览器的不同版本,测试完以后可以对比一下比如DOMContentLoaded,SpeedIndex等(非常多的)参数指标,相信结果会一目了然的