人生苦短,我用 Chrome!

阅读文本大概需要 6.66 分钟。

今年举办的 WWDC 大会上,苹果可是各种指名道姓地踩竞争对手来拔高自己,这种下三滥的营销手段换做是别人并不稀奇,但是这可是伟大神圣的苹果啊,有点不适应。其中大会上放出了这么一幅图,想必大家都看到过:

0?wx_fmt=png

我看到这张图的第一印象是:卧槽,好牛逼!但是,我怎么有点不信呢。

虽说我相信苹果不太可能造假,但是这个结果怎么得出来的只字未提,这不免让我心生怀疑,80% 到底是怎么得出来的?只说结果,不说数据来源就是耍流氓啊。

本着求真务实的精神,搜了下资料,终于搞清楚这个 80% 哪里来的了。

在此之前得先给大家科普下。

浏览器之所以能够工作,它的核心是一个叫做「内核」的东西,这个内核就类似于汽车的引擎,没有它浏览器是没法工作的,而市面上的内核有很多种,比如:KHTML、Presto、Trident、WebKit 等,大家熟知的浏览器如 Firefox、IE、Opera、Chrome、Safari 等所用的内核都不一样,而 Chrome 和 Safari 浏览器所用的内核是一样的,叫做「WebKit」,WebKit 其实是苹果基于开源的内核 KHTML 来改造的,也是开源的。

而内核其实又分为两部分:渲染引擎和 js 引擎。渲染引擎主要就是负责获取网页的 html、xml、图片、css 等内容进行渲染显示,js 引擎则负责解析 javascript 语言,实现网页的动态效果。

Chrome 虽然也是基于 WebKit 内核的,但是 Google 一开始觉得 WebKit 自带的 js 引擎性能上有问题,所以 Google 专门为 Chrome 搞了个 js 引擎叫做「V8」,所以在内核方面,Chrome 和 Safari 的主要区别就在于 js 引擎不一样,但是即使是 js 引擎不一样,以 Google 的技术实力,没道理让自家的 js 引擎比 WebKit 慢这么多啊?

终于在 WebKit 官网搞明白了原因,WebKit 官网在 6 月 5 日发表了一篇文章,地址在这里:

https://webkit.org/blog/7536/jsc-loves-es6/

这篇文章介绍了 WebKit 针对 javascript 最新的核心语言标准 ES6 进行了深度优化,而市面上大部分浏览器的稳定版都是基于 ES5 的,并且 Safari 开发版使用了优化后的新技术 ARES-6,并且拿线上的 Chrome 版本跟他们的开发版本进行了测试对比,还给出了一张测试截图:

0?wx_fmt=png


看到没有,Chrome 的运行时间刚好是 Safari 的 1.8 倍,至此,终于算搞明白苹果的 80% faster 是怎么来的了。

到目前为止,你们搞明白了没?

我来给你们总结下,意思就是,苹果在 WWDC 大会前一天发布了这篇文章,最新的 WebKit 的 js 引擎针对 ES6 进行了深度优化,并且应用在了 Safari 的开发版,然后跟 Chrome 线上没有针对 ES6 进行优化的版本进行了对比,最后得出结论 Safari 在 js 的执行效率上比 Chrome 快 80%,然后 WWDC 上开始欢呼。

真的,得知真相的我,有点忍不住想笑。

有人问难道 Chrome 没有针对 ES6 做优化么?当然有,只不过当时还是 Chrome 的开发版,没有正式发布,不过 WWDC 事后,Google 不服,很快就更新了一版 Chrome,哈哈...

不过,苹果只是自嗨而已,前一阵子 andreasgal.com 上发布了一份过去六年浏览器的市场份额变化数据,结果其他浏览器全部不行了,Chrome 市场份额遥遥领先:

0?wx_fmt=png

有人可能会质疑 Chrome 市场份额领先这么多,是不是因为 Android 的原因,那么下图这张仅仅是 PC 桌面市场的份额,应该有足够说服力了:

0?wx_fmt=png

数据来源见这里:


https://andreasgal.com/2017/05/25/chrome-won/

我自己是 Chrome 的死忠粉,其他浏览器我都用过,最终我还是觉得 Chrome 才真的好用,其他浏览器跟 Chrome 比还是有差距,具体主要表现在:

1. Chrome 对开发者的支持是真的强大,内置的 Chrome Dev Tools 简直不要太好用,堪称 web 开发必备工具;

2. Chrome 的插件太丰富了,基本上只有你想不到,没有你搜不到的插件,各种有用的插件可以让你的工作、生活更有色彩;

3. Chrome 有很多实用的小细节,比如地址栏输入 zhihu.com 然后按 tab 建,则直接开启在知乎的搜索;又比如快捷键 Cmd + Shift + T(windows 系统是 Ctrl + Shift + T)可以无限返回上次访问的页面;

4. Chrome 很快,是真的快。我们姑且就认为 Safari 的 js 引擎比 Chrome 的快 80%,但是你会依然觉得 Chrome 更快,原因就在于我们访问一个网站的快慢,内核上的一点性能的区别其实感知不到,最大的速度瓶颈可能是来自网络传输,而 Chrome 针对网络传输做了大幅的优化,比如 Chrome 强大的预测系统,你在输入网址的时候,Chrome 能预测你要输入的网址,并且提前 DNS 解析与预加载,所以很多时候你输入一个网址会觉得秒开,更何况 Safari 比 Chrome 的 js 引擎快 80% 只是自嗨而已。

不过这种针对网络的一系列优化措施也有代价的,会导致内存占用与 CPU 消耗过大,所以很多时候大家能感受到 Chrome 很吃资源就是这个原因,然而,我觉得这是小问题,换个配置稍微高点的电脑,能让自己的上网体验更快速是非常值得的,尤其对于开发者来说,吃饭的家伙如果不舍得投入,那么你的工作与学习如何才能更有效率?

我不知道有多少人已经在使用 Chrome 了,作为一个使用 Chrome 6、7 年时间的忠实粉,这里必须号召下那些还没有使用 Chrome 的同学,人生苦短,请使用 Chrome!


推荐阅读:

相信我,请好好学习英语

工信部出手:统一国内 Android 推送标准

iOS 用户专属赞赏通道

640?wx_fmt=png

回复关键字「Google」、「GitHub」、「Facebook」获取相关文章。


END

其实,我在扯淡!

640

不止技术与职场,还有生活与远方

长按关注,听我扯淡

——

微博: @googdev

个人博客: http://stormzhang.com

P2911 [USACO08OCT] Bovine Bones G 是洛谷【入门 4】数组中的一道题目。题目描述为 Bessie 喜欢棋盘游戏和角色扮演游戏,她说服 Farmer John 带她去一家爱好商店,在那里她购买了三个骰子用于投掷,这些骰子分别有 S1、S2 和 S3 个面[^1]。 在解题代码方面,有 Java 和 C++ 两种实现。Java 代码通过定义一个长度为 81 的数组统计不同和值出现的次数,通过嵌套循环模拟掷骰子的过程,将每个和值对应的数组元素加 1,同时更新最大出现次数及其对应的和值,最后输出最大出现次数对应的和值[^2]。示例代码如下: ```java import java.util.Scanner; public class P2911_1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int s1 = sc.nextInt(), s2 = sc.nextInt(), s3 = sc.nextInt(); int[] arr = new int[81]; int max = 0; int temp = 0; for (int i = 1; i <= s1; i++) { for (int j = 1; j <= s2; j++) { for (int k = 1; k <= s3; k++) { arr[i + j + k]++; if (temp < arr[i + j + k]) { max = i + j + k; temp = arr[i + j + k]; } } } } System.out.println(max); sc.close(); } } ``` C++ 代码同样使用数组统计和值出现的次数,先通过三重循环模拟掷骰子得到所有可能的和值并更新对应次数,再遍历所有可能的和值范围,找出出现次数最多且和值最小的结果并输出[^3]。示例代码如下: ```cpp #include<bits/stdc++.h> using namespace std; int s1, s2, s3, res; int cnt[20000]; int maxn = -1e9; int main() { scanf("%d%d%d", &s1, &s2, &s3); for (int i = 1; i <= s1; ++i) { for (int j = 1; j <= s2; ++j) { for (int k = 1; k <= s3; ++k) { cnt[i + j + k]++; } } } for (int i = 3; i <= s1 + s2 + s3; ++i) { if (cnt[i] > maxn) maxn = cnt[i], res = i; } printf("%d", res); return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值