Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

强类型数组的效率测试

  虽然一直都知道强类型数组的效率比普通的数组高,但是一直没去测试他们之间的效率差距具体的数量级,今天就来做个小测试吧。其实因为浏览器内部封装的太狠,使得强类型数组的效率并不能提高到和普通变量一样,不过比起普通的数组它确实已经快了很多。
var t,i,l=1E7,a=[],b=new Float64Array(l);

//空循环
t=new Date;
for(i=0;i<l;i++);
console.log(new Date()-t);

//普通数组
t=new Date;
for(i=0;i<l;i++)a[i]=i;
console.log(new Date()-t);

//强类型数组
t=new Date;
for(i=0;i<l;i++)b[i]=i;
console.log(new Date()-t);

  由于普通数组的效率差异本身很大(参见:JavaScript数组元素的访问效率),拿强类型数组很普通数组比较没啥意义,不过和空循环比起来它还是比较稳定的。虽然强类型数组的储存是使用连续的内存(参见:JavaScript的“强类型数组”简介),照理说效率应该和普通的变量的操作速度不相上下的,但是毕竟受到了JavaScript的一层封装,使得效率被拖累了。比如我们用的下标是普通的JavaScript变量,内部解析当然要先解析那个变量,所以它的效率当然不如普通的变量访问来的快。不过至少在所有浏览器上强类型数组都比普通数组快上许多的,如果不需要兼容低版本浏览器,使用强类型数组是很好的优化方式。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^