JS性能探讨:往数组中添加项

比较了4种可以向数组添加项的方法之间的性能:

使用索引器添加

console.time("index");
var a = [];
for (var i = 0, l = times; i < l; i++) {
    a[i] = i;
}
console.timeEnd("index");

使用push方法

console.time("push");
var a = [];
for (var i = 0, l = times; i < l; i++) {
    a.push(i);
}
console.timeEnd("push");

使用concat方法

console.time("concat");
var a = [];
for (var i = 0, l = times; i < l; i++) {
    a.concat(i);
}
console.timeEnd("concat");

使用concat方法,参数为数组

console.time("concat with array");
var a = [];
for (var i = 0, l = times; i < l; i++) {
    a.concat([i]);
}
console.timeEnd("concat with array");

把times设置为10000(万)次:

index: 0.310ms
push: 1.476ms
concat: 8.911ms
concat with array: 2.261ms

把times设置为100000(十万)次:

index: 1.967ms
push: 11.980ms
concat: 70.410ms
concat with array: 28.292ms

把times设置为1000000(百万)次:

index: 138.559ms
push: 93.074ms
concat: 608.768ms
concat with array: 243.371ms

把times设置为10000000(千万)次:

index: 1473.733ms
push: 611.636ms
concat: 6058.528ms
concat with array: 2431.689ms

总结

  • concat方法的执行效率是最慢的
  • 相比两种concat方法的传参,当接受参数为数组时,执行效率要高于接受参数为非数组
  • 索引器多数情况下执行效率要高于push方法
  • 当执行次数越来越多时,索引器的执行效率开始不如push方法
时间: 2024-12-25 01:42:27

JS性能探讨:往数组中添加项的相关文章

js如何移除数组中指定索引的项

js如何移除数组中指定索引的项:在Array对象中有给定的函数可以删除数组中指定的元素,虽然非常好用,但是总感觉看不到摸不着的比较别扭,下面就分享一个自定义的删除数组指定索引值元素的函数,希望给大家一个全新的思路.代码实例如下: var array=[]; array[0]="蚂蚁部落一"; array[1]="蚂蚁部落二"; array[2]="蚂蚁部落三"; array[3]="蚂蚁部落四"; array[4]="

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

在数组中添加一个元素进行(替换 删除 插入)

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //可变数组继承不可变数组 //1.创建  设定元素个数进行创建 NSMutableArray *mutArr=[NSMutableArray arrayWithCapacity:7]; //2.向数组中添加一个元素 NSArray *[email protected][@"MON",@

前端JS:判断list(数组)中的json对象是否重复

前端JS:判断list(数组)中的json对象是否重复 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Test</title> <script> function displayDate(){ var arr = [{ d: '2015-10-12',C:'Apple'}, { d: '2015-10-12',C:'Apple'}

javascript 数组,数组中添加新元素 push() ,unphsh() 相当于Add()

<1> var   a   =   [];     //建立数组 push   方法 将新元素添加到一个数组中,并返回数组的新长度值.

利用JavaScript去掉数组中重复项

利用JavaScript的object的特性,我们可以非常容易的实现将一个数组的重复项去掉. object的特性是:key一定是唯一的. 把数组重复项去掉: 1 将数组转换成一个object对象,数组的值作为object对象的 key 因为key是唯一的,碰到重复的数组值的时候,object不会添加key 2 将object对象转换成数组,key为数组的值. 在之前的重复数组,每一个值实际上对应object只有一个key,这样在还原到数组的时候,重复值就去掉了 1 /*用object的特性去掉数

在一个升序数组中添加最少的数字,使得从1--n之间所有的数都能用数组中几个数的和表示

一个Java的笔试题上面遇到的题,当时没有做出来. 拆分: 序列升序 1--n所有的数都要能表示 用数组中数字的和表示 添加最少的数字 思路:这个要先从小的数开始表示,因为大的数可以用小数表示. 1--n是一个连续序列,有个特点是1+2+4=7,用1,2,4可以表示1--7之间的数字.1+2+4+8=15可以表示1--15之内的数字.1+2+4+8+16=31.规律很明显了,每次加上和的后一个数. 1+2+5=8能表示1--8的数字吗?答案是不能,因为1+2=3,而后面添加的是5,所以数字4不能

C# 移除数组中重复项

static void Main(string[] args) { //看到数组的第一反应应该是排序 int[] array = { 2,4,6,2,8,5,8,10}; //去掉数组中重复的项 //先排序 arrayAsc(array); List<int> list = array.ToList(); for (int i = 0; i < list.Count-1; i++) { if(list[i]== list[i+1]) list.RemoveAt(i+1); } for (

Java 向数组中添加一个元素

方法 一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度. 向数组中添加元素思路: 第一步:把 数组 转化为 集合 list = Arrays.asList(array); 第二步:向 集合 中添加元素 list.add(index, element); 第三步:将 集合 转化为 数组 list.toArray(newArray); 例子: 将数组转化为集合1 String[] arr = {"ID", "姓名", "年龄"