用零初始化javascript数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用零初始化javascript数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1549字,纯文字阅读大概需要3分钟。
内容图文
![用零初始化javascript数组](/upload/InfoBanner/zyjiaocheng/675/8a04475650094baca1f2bfb16bb2ec72.jpg)
我正在测试不同的方法来初始化带有零的大型javascript数组.到目前为止,带有push(0)的简单for循环似乎远远胜过其他方法(请参见http://jsperf.com/initialise-array-with-zeros),但是我对此测试的有效性感到怀疑.
实际上,您将只创建一次如此大的数组并将其缓存,以便稍后在您再次需要大的初始化数组时,可以对其进行切片.因此,我认为最重要的评估是第一次执行此代码所花费的时间,而不是许多试验的平均时间.
有人反对吗?还是有人知道如何/在哪里可以测试一轮的计时?
编辑:针对一些关于分配具有这么多零的数组的原理的误解,我想澄清两件事.
>不会有稀疏性.我需要创建多个大型数组并将其用于计算.这些副本将充满浮点数,并且浮点数精确为零的机会可以忽略不计.
>并非所有计算都在阵列上顺序执行.我相信,与覆盖通过引用传递的数组中的值相比,在过程中生成数组的函数效率不高(请参见例如gl-matrix.js).
因此,我的解决方案是一次创建一个大的零填充数组,然后在需要新数组时获取slice(),然后通过引用将该副本传递给任何可使用它的函数.在任何浏览器中,Slice的速度都非常快.
现在,尽管您可能仍然担心我为什么要这样做,但我真正感兴趣的是,是否有可能在首次运行时评估不同初始化方法的性能.我希望有这个时间,因为在我的情况下,我肯定只会运行一次.
是的,我的jsperf代码可能会错过一些解决方案.因此,如果您有我没想到的方法,请随时添加!谢谢!
解决方法:
仅测试一次操作非常复杂,因为性能会因计算机的其他工作而有很大差异.您将不得不多次运行单个测试,并在每次测试之间将其重置为相同的条件. jsperf多次运行测试的原因是为了获得良好的平均值以清除异常.
您应该在不同的浏览器中对此进行测试,以查看哪种方法总体上最好.您会看到结果非常不同.
在Internet Explorer中,最快的方法实际上不是您所测试的方法,而是分配零的简单循环:
for (var i = 0; i < numzeros; i++) zeros[i] = 0;
内容总结
以上是互联网集市为您收集整理的用零初始化javascript数组全部内容,希望文章能够帮你解决用零初始化javascript数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。