Script Preparation code:
x
 
var a = "Here's a string value";
var b = 5; // and a number
var c = false;
var object = {
  a, b, c
}
var array = [
  a, b, c
];
var passObject = (obj) => {
  return obj.a.length + obj.b * obj.c ? 2 : 1;
}
var passRawValues = (val_a, val_b, val_c) => {
  return val_a.length + val_b * val_c ? 2 : 1;
}
var passArray = (arr) => {
  return arr[0].length + arr[1] * arr[2] ? 2 : 1;
}
var x = 0;
Tests:
  • Pass object

     
    x << 1;
    x ^= passObject(object);
  • Pass object with new obj

     
    x << 1;
    x ^= passObject({ a: a, b: b, c: c });
  • Pass raw values

     
    x << 1;
    x ^= passRawValues(a, b, c);
  • Pass array

     
    x << 1;
    x ^= passArray(array);
  • Pass array with new array

     
    x << 1;
    x ^= passArray(array = [a, b, c]);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Pass object
    Pass object with new obj
    Pass raw values
    Pass array
    Pass array with new array

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Chrome 114 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
Pass object 6611711.0 Ops/sec
Pass object with new obj 4755817.0 Ops/sec
Pass raw values 4750840.0 Ops/sec
Pass array 6462040.5 Ops/sec
Pass array with new array 3981202.0 Ops/sec