关于push和concat的性能问题

Posted zengxuelan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于push和concat的性能问题相关的知识,希望对你有一定的参考价值。

var arr1 = [1,2,3,-1]
var arr2 = [4,5,6,7,8,9,10,12,13,14,15,16,17,18,29,30,31,32,33,34,35,36,37,38,39,40]
var arr  = arr1.concat(arr2)



借用apply方法 ,push、splice也可和来连接数组。因为push没有创建新数组,如果想要保挂原对象的引用,可使用push方法。

var testConcat = function(abc) {
  var arr1 = [1,2,3,-1]
  var arr2 = [4,5,6,7,8,9,10,12,13,14,15,16,17,18,29,30,31,32,33,34,35,36,37,38,39,40]
  var arr  = arr1.concat(arr2)
}

var testPush = function(abc) {
  var arr1 = [1,2,3,-1]
  var arr2 = [4,5,6,7,8,9,10,12,13,14,15,16,17,18,29,30,31,32,33,34,35,36,37,38,39,40]
  Array.prototype.push.apply(arr1, arr2)
}

var count = 1000000

var date = Date.now()
for (var i = 0; i < count; i++) {
    testConcat()
}
console.log(Date.now() - date)

var date = Date.now()
for (var i = 0; i < count; i++) {
    testPush()
}

console.log(Date.now() - date) 

结果:

时间:

1470
465

json什么时候用数组,如果频繁添加删除的尽量用json,因为这是数组的短处,如果频繁取数据的用数组。

以上是关于关于push和concat的性能问题的主要内容,如果未能解决你的问题,请参考以下文章

push竟比concat快上数百倍?记一个concat在十万级数据引发的性能问题

关于 laravel 关系和性能的问题

js数组的拷贝赋值复制二三事总结

java StringString.concat和StringBuilder性能对比

concat 与 || 之间是不是存在性能差异?在甲骨文中

转: 58同城高性能移动Push推送平台架构演进之路