Tests:
  • For loop + Array.push

    x
     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = [];
    for (let currentDate = start; currentDate <= end; currentDate.setMonth(currentDate.getMonth() + 1)) {
      dates.push(currentDate.toISOString().split("T")[0]);
    }
  • For loop + Spread Operator

     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = [];
    for (let currentDate = start; currentDate <= end; currentDate.setMonth(currentDate.getMonth() + 1)) {
      dates = [...dates, currentDate.toISOString().split('T')[0]];
    }
  • While + Array.push

     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = [];
    let currentDate = start;
    while (currentDate <= end) {
          dates.push(currentDate.toISOString().split("T")[0]);
          currentDate.setMonth(currentDate.getMonth() + 1);
        }
  • While + Spread Operator

     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = [];
    let currentDate = start; 
    while (currentDate <= end) {
          dates = [...dates, currentDate.toISOString().split('T')[0]];
          currentDate.setMonth(currentDate.getMonth() + 1);
        }
  • Array.from

     
    const start = new Date("2020-06-01");
    const end = new Date("2026-05-01");
    let dates = Array.from(
          { length: (end.getFullYear() - start.getFullYear()) * 12 },
          (_, i) => new Date(start.getFullYear(), start.getMonth() + i, 1).toISOString().split('T')[0]
        );
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    For loop + Array.push
    For loop + Spread Operator
    While + Array.push
    While + Spread Operator
    Array.from

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 2 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
Chrome 109 on Windows
View result in a separate tab
Test name Executions per second
For loop + Array.push 11180.5 Ops/sec
For loop + Spread Operator 9885.8 Ops/sec
While + Array.push 11469.3 Ops/sec
While + Spread Operator 9992.7 Ops/sec
Array.from 10061.9 Ops/sec