map vs flattened (v2)

Revision 2 of this benchmark created on


Setup

var input = [
{label: "yeah", interp: 0.1},
{label: "yeah2", interp: 0.2},
{label: "yeah3", interp: 0.3},
{label: "yeah4", interp: 0.4},
];
var output = new Array(4);
var outputEmpty = [];

Test runner

Ready to run.

Testing in
TestOps/sec
map-destructure
var wowsers = input.map(({label: variantName, interp: weight}) => {
	return {variantName, weight, value:0};
});

ready
flat
var wowsers = [
  {variantName: input[0].label, weight:input[0].interp, value:0},
  {variantName: input[1].label, weight:input[1].interp, value:0},
  {variantName: input[2].label, weight:input[2].interp, value:0},
  {variantName: input[3].label, weight:input[3].interp, value:0}
];

ready
map-indirect
var wowsers = input.map((data) => {
	return {variantName: data.label, weight: data.interp, value:0};
});
ready
for-push
var wowsers = [];
for (let i=0; i<4; i++) {
  wowsers.push({variantName: input[i].label, weight:input[i].interp, value:0});
}
ready
for-preallocate
var wowsers = new Array(4);
for (let i=0; i<4; i++) {
  wowsers[i] = {variantName: input[i].label, weight:input[i].interp, value:0};
}
ready
flat-flat
const input0 = input[0];
const input1 = input[1];
const input2 = input[2];
const input3 = input[3];
var wowsers = [
  {variantName: input0.label, weight:input0.interp, value:0},
  {variantName: input1.label, weight:input1.interp, value:0},
  {variantName: input2.label, weight:input2.interp, value:0},
  {variantName: input3.label, weight:input3.interp, value:0}
];
ready
for-preallocated
for (let i=0; i<4; i++) {
  output[i] = {variantName: input[i].label, weight:input[i].interp, value:0};
}
ready
for-push-preallocated
for (let i=0; i<4; i++) {
  outputEmpty.push({variantName: input[i].label, weight:input[i].interp, value:0});
}
ready
flat-flat-preallocated
const input0 = input[0];
const input1 = input[1];
const input2 = input[2];
const input3 = input[3];

output[0] =  {variantName: input0.label, weight:input0.interp, value:0};
  
output[1] =  {variantName: input1.label, weight:input1.interp, value:0};

output[2] =  {variantName: input2.label, weight:input2.interp, value:0};
  
output[3] =  {variantName: input3.label, weight:input3.interp, value:0};
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.