基准:http: //jsperf.com/substringing
因此,我正在启动我的第一个基于 HTML5 浏览器的客户端项目。它必须将非常非常大的文本文件解析为一个或多个对象数组。我知道我将如何进行编码;我现在主要关心的是尽可能快地获取解析器代码,我的主要测试平台是 Chrome。然而,在查看子字符串方法之间的差异时(我已经很久很久没有接触过 JavaScript),我注意到与 FireFox 相比,Chrome 中的这个基准测试非常慢。为什么?
我的第一个假设是它与 FireFox 的 JS 引擎处理字符串对象的方式有关,并且对于 FireFox,此操作是简单的指针操作,而对于 Chrome,它实际上是在进行硬拷贝。但是,我不确定为什么 Chrome不会进行指针操作或 FireFox会. 有人有一些见识吗?
JSPerf 似乎正在丢弃我的 FireFox 结果,而不是在 BrowserScope 上显示它们。对我来说,我.substr()
在 FF4 中获得了 9,568,203 ±1.44% Ops/sec。
编辑:所以我在 Chrome 下方看到了 FF3.5 的性能结果。所以我决定测试我的指针假设。这使我对Substrings 测试进行了第二次修订1,092,718±1.62%
,在 FF4 中执行 Ops/sec 与1,195±3.81%
Chrome 中的 Ops/sec 相比,速度降低到仅快 1000 倍,但在性能上仍然存在莫名其妙的差异。
后记: 不,我一点也不担心 Internet Explorer。我担心试图提高我的技能并更深入地了解这种语言。