数据结构是什么?
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
var arr = []
[]声明式数组, 也是很多人推荐的声明
new Array
new出来一个实例化对象,他需要分配内存
Array.of
Array.of是ES6的语法,其出现是为了弥补new Array的不足
分别对3种进行循环1000万次看看性能如何
test []
console.time('[]');
var arr = [];
for (var index = 0; index < 10000000; index++) {
arr.push[index]
}
console.timeEnd('[]');
分别取出三次值
[]: 137.045166015625ms
[]: 149.779296875ms
[]: 168.26806640625ms
test new Array
console.time('new Array');
var arr1 = new Array(10000000);
for (var j = 0; j < 10000000; j++) {
arr1[j] = j;
}
console.timeEnd('new Array');
分别取出三次值
new Array: 74.40380859375ms
new Array: 85.832275390625ms
new Array: 80.958251953125ms
test Array.of
console.time('Array.of');
var arr2 = Array.of();
for (var k = 0; k < 10000000; k++) {
arr2.push(k);
}
console.timeEnd('Array.of');
分别取出三次值
Array.of: 438.76416015625ms
Array.of: 446.82177734375ms
Array.of: 393.240966796875ms
完整测试代码
<script>
function arr () {
console.time('[]');
var arr = [];
for (var index = 0; index < 10000000; index++) {
arr.push[index]
}
console.timeEnd('[]');
console.time('new Array');
var arr1 = new Array(10000000);
for (var j = 0; j < 10000000; j++) {
arr1[j] = j;
}
console.timeEnd('new Array');
console.time('Array.of');
var arr2 = Array.of();
for (var k = 0; k < 10000000; k++) {
arr2.push(k);
}
console.timeEnd('Array.of');
}
arr();
</script>
分别输出3次
// 第一次
[]: 149.431884765625ms
new Array: 81.44482421875ms
Array.of: 407.18115234375ms
// 第二次
[]: 151.85498046875ms
new Array: 83.663818359375ms
Array.of: 439.60693359375ms
// 第三次
[]: 153.926025390625ms
new Array: 81.570068359375ms
Array.of: 383.362060546875ms
从上面的结果可以看到new Array速度是最快然后到[]其次Array.of, 为什么?
- new Array他已经将内存分配好了,然后再进行赋值所以会快很多。
- [] 当内存不够大的时候他会扩充导致这部分消耗了更多的时间。
- Array.of 最慢,其实跟[]是差不多,他底层需要做更多东西。
总结:怎么使用还是要看需求,一般的话使用[]进行声明数组,因为这样不会浪费内存,如果事先知道需要多大的数组使用new Array会更好,但是因为new Array声明数组有时候会出现一些奇葩问题。
看似差距没那么大,当你发现问题的时候才会知道他的用处。