内容简介:在前端项目对数组,map的拷贝,比较中,我们往往会去用json.stringify、json.parse,那么这样做究竟好不好呢?经过一系列测试,发现用这种方式的性能是比较差的,下面是实验结果结果:
在前端项目对数组,map的拷贝,比较中,我们往往会去用json.stringify、json.parse,那么这样做究竟好不好呢?
经过一系列测试,发现用这种方式的性能是比较差的,下面是实验结果
1.数组拷贝
const a1 = new Array(1000000).fill('').map((e, index) => index)
function f1() {
const start = new Date().getTime()
const r = JSON.parse(JSON.stringify(a1))
console.log('json结果', new Date().getTime() - start)
}
function f2() {
const start = new Date().getTime()
const r = [...a1]
console.log('array结果', r == a1, new Date().getTime() - start)
}
f1()
f2()
结果:
json结果 104
array结果 false 35
我们发现差距在 四倍 左右,当数组变大基本也维持在这个比例
2.遍历对比
const map1 = {}
const map2 = {}
for (let i=0;i < 1000000;i++) {
map1[i] = i
map2[i] = i
}
function f1() {
const start = new Date().getTime()
const r = JSON.stringify(map1) == JSON.stringify(map2)
console.log('json结果', r, new Date().getTime() - start)
}
function f2() {
const start = new Date().getTime()
const r = Object.keys(map1).every(key => {
if (map2[key] || map2[key] === 0) {
return true
} else {
return false
}
})
console.log('array结果', r, new Date().getTime() - start)
}
f1()
f2()
结果:
json结果 true 506
array结果 true 140
基本上也是在 四倍 左右的差距
结尾
还有更多的测试没做,但估计基本上也是这个差距,
其实说到底,用json的api底层也是遍历过了,并且转成字符串,所以性能会比较差
大家还是自己手写的遍历还是手写,或者用第三方插件如lodash。不要一味用json api
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深度学习
[美] 伊恩·古德费洛、[加] 约书亚·本吉奥、[加] 亚伦·库维尔 / 赵申剑、黎彧君、符天凡、李凯 / 人民邮电出版社 / 2017-7-1 / 168
《深度学习》由全球知名的三位专家Ian Goodfellow、Yoshua Bengio 和Aaron Courville撰写,是深度学习领域奠基性的经典教材。全书的内容包括3个部分:第1部分介绍基本的数学工具和机器学习的概念,它们是深度学习的预备知识;第2部分系统深入地讲解现今已成熟的深度学习方法和技术;第3部分讨论某些具有前瞻性的方向和想法,它们被公认为是深度学习未来的研究重点。 《深度......一起来看看 《深度学习》 这本书的介绍吧!