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