DEV Community

Cover image for Which JS loop is fast?
Shubham Tiwari
Shubham Tiwari

Posted on

Which JS loop is fast?

Hello Guys Today i will discuss which loop among "for","while" and "do-while" is faster?
I am comparing only these 3 loops in this post.

Let's get started...

I am going to perform this test at 10 billion value for the loops

For loop -

let count = 0;
let start = new Date().getTime();
for(let i = 0; i<10000000000;i++){
  count += i
}
let end = new Date().getTime();

console.log((end - start)/1000)
Enter fullscreen mode Exit fullscreen mode

OUTPUT -

I performed it 10 times and got the result in seconds

22.01
14.56
14.49
14.93
15.03
15.10
15.30
15.11
16.34
15.92
Enter fullscreen mode Exit fullscreen mode

While loop -

let count = 0;
let start = new Date().getTime();
let i = 0;
while (i < 10000000000){
    count += i;
    i++;
}
let end = new Date().getTime();

console.log((end - start)/1000)
Enter fullscreen mode Exit fullscreen mode

OUTPUT -

I performed it 10 times and got the result in seconds

21.20
14.69
14.42
15.64
16.93
15.79
16.40
16.09
19.05
18.27
Enter fullscreen mode Exit fullscreen mode

do-while loop -

let count = 0;
let start = new Date().getTime();
let i = 0;
do{
    count += i;
    i++
} while (i < 10000000000)
let end = new Date().getTime();

console.log((end - start)/1000)
Enter fullscreen mode Exit fullscreen mode

OUTPUT -

I performed it 10 times and got the result in seconds

22.36
14.83
15.36
14.82
15.48
18.17
22.48
17.08
18.64
18.11
Enter fullscreen mode Exit fullscreen mode

Averages -

  • For loop - 15.87
  • While loop - 17.14
  • Do-while loop - 17.73

From my test results , For loop is slightly better than while and do-while but i am saying this with test results and i can be wrong as well

NOTE - While running the loop first time in every case the time taken is higher compared to other 9 test case, please mention the reason in the comment section if you know that.

THANK YOU FOR CHECKING THIS POST
^^You can help me by some donation at the link below Thank you👇👇 ^^
☕ --> https://www.buymeacoffee.com/waaduheck <--

Also check these posts as well
https://dev.to/shubhamtiwari909/javascript-map-with-filter-2jgo

https://dev.to/shubhamtiwari909/e-quotes-3bng

https://dev.to/shubhamtiwari909/deploy-react-app-on-netlify-kl

Top comments (12)

Collapse
 
smac89 profile image
smac89 •

Next time you want to do timings in JS, instead of manually calculating the time, just use console.time(label) and it's companion console.timeEnd(label).

See docs: developer.mozilla.org/en-US/docs/W...

Collapse
 
shubhamtiwari909 profile image
Shubham Tiwari •

Thank you i will use it

Collapse
 
suryakant profile image
Suryakant Patil •

Hey, Can you test the below For loop? I guess it will give you slightly better performance.

let i=0;
for(; i<10000000000;i++){
  count += i
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
shubhamtiwari909 profile image
Shubham Tiwari •

The code is not correct can you please write it correctly

Collapse
 
fjones profile image
FJones • • Edited

I'm not sure where you're struggling. The error message is quite telling, in that all that's missing is:

- let i=0;
+ let i=0, count;
Enter fullscreen mode Exit fullscreen mode

Then the snippet runs. Though my quick look over it seems to make it benchmark slower than the for-scoped version, which is a bit surprising.

Thread Thread
 
shubhamtiwari909 profile image
Shubham Tiwari •

Yeah got it

Collapse
 
rouilj profile image
John P. Rouillard •

Which JS interpreter are you using? Is it possible it's running a JIT optimize step as part of the first run that is reflected in the
subsequent runs?

Collapse
 
shubhamtiwari909 profile image
Shubham Tiwari •

I am using node js for running these

Collapse
 
rouilj profile image
John P. Rouillard •

Ok, so V8. So suspect the answer to your question:

While running the loop first time in every case the time
taken is higher compared to other 9 test case, please
mention the reason in the comment section if you know that.

is probably the JIT compiler/optimizer:

blog.logrocket.com/how-javascript-...

Thread Thread
 
shubhamtiwari909 profile image
Shubham Tiwari •

Thank i will read this

Collapse
 
andrewbaisden profile image
Andrew Baisden •

Speed and performance really become a serious requirement when you are trying to find the best data structure for your application. Especially when it has a lot of users.

Collapse
 
shubhamtiwari909 profile image
Shubham Tiwari •

Yes it is and i performed this test because I wanted to see that all these loops are equal or have some sort of difference