Time complexity of unshift() vs. push() in Javascript

前端 未结 5 909
时光取名叫无心
时光取名叫无心 2020-12-04 17:23

I know what is the difference between unshift() and push() methods in JavaScript, but I\'m wondering what is the difference in time complexity?

5条回答
  •  悲哀的现实
    2020-12-04 17:52

    push() is faster.

    js>function foo() {a=[]; start = new Date; for (var i=0;i<100000;i++) a.unshift(1); return((new Date)-start)}
    js>foo()
    2190
    js>function bar() {a=[]; start = new Date; for (var i=0;i<100000;i++) a.push(1); return((new Date)-start)}
    js>bar()
    10
    

    function foo() {a=[]; start = new Date; for (var i=0;i<100000;i++) a.unshift(1); return((new Date)-start)}
    console.log(foo())
    
    function bar() {a=[]; start = new Date; for (var i=0;i<100000;i++) a.push(1); return((new Date)-start)}
    console.log(bar());


    Update

    The above does not take into consideration the order of the arrays. If you want to compare them properly, you must reverse the pushed array. However, push then reverse is still faster by ~10ms for me on chrome with this snippet:

    var a=[]; 
    var start = new Date; 
    for (var i=0;i<100000;i++) {
      a.unshift(1);
    }
    var end = (new Date)-start;
    console.log(`Unshift time: ${end}`);
    
    var a=[];
    var start = new Date;
    for (var i=0;i<100000;i++) {
      a.push(1);
    }
    
    a.reverse();
    var end = (new Date)-start;
    console.log(`Push and reverse time: ${end}`);

提交回复
热议问题