Tests:
  • Object.assign

    AخA
     
    const a = { x: 'xxx', y: 1, z: null }
    const b = { z: 1, u: 'uuu', v: null }
    Object.assign(a, b);  
  • for in loop

     
    const a = { x: 'xxx', y: 1, z: null }
    const b = { z: 1, u: 'uuu', v: null }
    for (const prop in b) {
      if (b.hasOwnProperty(prop)) {
        a[prop] = b[prop];
      }
    }
  • for of loop

     
    const a = { x: 'xxx', y: 1, z: null }
    const b = { z: 1, u: 'uuu', v: null }
    for (const prop of Object.keys(b)) {
      a[prop] = b[prop];
    }
  • for Object entries

     
    const a = { x: 'xxx', y: 1, z: null }
    const b = { z: 1, u: 'uuu', v: null }
    for (const [key, value] of Object.entries(b)) {
      a[key] = value;
    }
  • for in without check

     
    const a = { x: 'xxx', y: 1, z: null }
    const b = { z: 1, u: 'uuu', v: null }
    for (const prop in b) {
        a[prop] = b[prop];
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Object.assign
    for in loop
    for of loop
    for Object entries
    for in without check

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 2 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/111.0
Firefox 111 on Mac OS X 10.15
View result in a separate tab
Test name Executions per second
Object.assign 11592283.0 Ops/sec
for in loop 17092460.0 Ops/sec
for of loop 7126999.0 Ops/sec
for Object entries 4244930.5 Ops/sec
for in without check 19349014.0 Ops/sec