栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript中对象/数组的性能如何?(特别是对于Google V8)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript中对象/数组的性能如何?(特别是对于Google V8)

(我已经保存了测试用例的副本,并且在修复JSPref /找到后继者后将更新答案)


嗯。。。也许答案太过激了……但是我创建[了一个测试套件,正是为了探索这些问题(以及更多)

从这个意义上讲,您可以在此50多个测试用例测试器中看到性能问题(这将花费很长时间)。

顾名思义,它还探索了使用DOM结构的本机链接列表性质的用法。

总结如下

  • V8阵列非常快
  • 数组推入/弹出/移位比任何等效对象快约20倍以上。
  • 令人惊讶的
    Array.shift()
    是,它快于数组弹出的速度约6倍,但快于对象属性删除的速度约100倍。
  • 有趣的
    Array.push( data );
    是,速度快
    Array[nextIndex] = data
    了将近20(动态数组)到10(固定数组)倍。
  • Array.unshift(data)
    比预期的要慢,并且比新添加的属性要慢大约5倍。
  • 空值
    array[index] = null
    比删除
    delete array[index]
    数组中的值(未定义)快约4倍++。
  • 令人惊讶的是,将对象中的值清空
    obj[attr] = null
    比仅删除属性要慢大约2倍
    delete obj[attr]
  • 毫不奇怪,中间阵列
    Array.splice(index,0,data)
    很慢,非常慢。
  • 出人意料的是,它
    Array.splice(index,1,data)
    已经过优化(没有长度变化),并且比接头快100倍
    Array.splice(index,0,data)
  • 毫不奇怪,divlinkedList在所有扇区上都比阵列要差,但
    dll.splice(index,1)
    移除除外(它破坏了测试系统)。
  • *所有这一切的 *最大惊喜 (如jjrv所指出的),V8阵列的写入速度比V8读取的速度稍快= O

注意:
这些指标仅适用于v8不会“完全优化”的大型阵列/对象。对于小于任意大小(24?)的数组/对象大小,可能存在非常孤立的优化性能情况。更多细节可以在多个GoogleIO视频中广泛看到。

注意2: 这些出色的性能结果并未在浏览器(尤其是

*cough*
IE)之间共享。测试也是巨大的,因此我尚未完全分析和评估结果:请在=)中进行编辑



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464715.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号