Script Preparation code:
x
 
var data = []
var out
for (let i = 0; i < 100; i++)
  data.push({ date: new Date(Math.round(Date.now() * Math.random())).toISOString(), id: Math.floor(i / 25) })
for (let i = 0; i < 100; i++)
  data.push({ date: new Date(Math.round(Date.now() * Math.random())).toISOString(), id: Math.round(Math.random() * 5) })
Tests:
  • Every time date parse

     
    out = []
    for (let i = 0; i < data.length; i++) {
      const last = out[out.length - 1]
      const { id, date } = data[i]
      if (last && last.id === id)
        last.date = new Date(date)
      else
        out.push({ id, date: new Date(date) })
    }
  • Parse in second loop

     
    out = []
    for (let i = 0; i < data.length; i++) {
      const last = out[out.length - 1]
      const { id, date } = data[i]
      if (last && last.id === id)
        last.date = date
      else
        out.push({ id, date: date })
    }
    for (let i = 0; i < out.length; i++)
      out[i].date = new Date(out[i].date)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Every time date parse
    Parse in second loop

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0
Firefox 121 on Windows
View result in a separate tab
Test name Executions per second
Every time date parse 24515.7 Ops/sec
Parse in second loop 51158.6 Ops/sec