{"jsprofiler":{"version":"2.5.7","options":{"iterations":1000,"verbosity":2,"magnitude":1000,"memory":false,"precision":{"time":20,"memory":4},"units":{"memory":"B","time":"ms"},"json":false,"console":false}},"node":{"version":"18.18.0"},"v8":{"version":"10.2.154.26-node.26"},"results":[{"name":"recursion","description":"Recursion variations: Calculating sum of array of integers. Profile contains a simple for-loop for reference.","keywords":["for","loop","recursion","sum","tail","tailrecursion"],"functions":[{"description":"for loop sum for reference","keywords":["for","loop","sum"],"codeSample":"for (...) { sum += d[i] }","code":"(d) => {\n    let sum = 0;\n    for (let i = 0; i < d.length; i++) {\n      sum += d[i];\n    }\n\n    return sum;\n  }","time":{"average":"0.00415609741210937536ms","minimum":"0.00178527832031250000ms","maximum":"0.16520690917968750000ms"}},{"description":"recursive sum","keywords":["recursion","sum"],"codeSample":"const f = (d) => (d && d.length && (d[0] + f(d.slice(1)))) || 0","code":"(d) => (d && d.length && (d[0] + recursiveSum.f(d.slice(1)))) || 0","time":{"average":"1.27837606430053707385ms","minimum":"0.58063507080078125000ms","maximum":"17.64865112304687500000ms"}},{"description":"tail recursive sum","keywords":["recursion","sum","tail","tailrecursion"],"codeSample":"const f = (d, i = 0) => (!d.length && i) || f(d.slice(1), i + d[0])","code":"(d, i = 0) => (!d.length && i)\n    || tailRecursiveSum.f(d.slice(1), i + d[0])","time":{"average":"1.41570396804809561786ms","minimum":"0.63285064697265625000ms","maximum":"12.06014633178710937500ms"}}],"fastest":[{"description":"for loop sum for reference","keywords":["for","loop","sum"],"codeSample":"for (...) { sum += d[i] }","code":"(d) => {\n    let sum = 0;\n    for (let i = 0; i < d.length; i++) {\n      sum += d[i];\n    }\n\n    return sum;\n  }","time":{"average":"0.00415609741210937536ms","minimum":"0.00178527832031250000ms","maximum":"0.16520690917968750000ms"}}]},{"name":"object iteration","description":"Object iteration: different ways of iterating over properties of an object and concatenating property names into a single string.","keywords":["check","entries","for","foreach","forin","forof","getownpropertynames","hasownperperty","in","iteration","keys","loop","map","names","object","of","own","ownproperties","ownproperty","ownpropertynames","ownprops","property"],"functions":[{"description":"iterating an object's entries with forEach","keywords":["entries","foreach","iteration","loop","object","property"],"codeSample":"Object.entries(obj).forEach => string","code":"(d) => {\n    let s = '';\n    Object.entries(d).forEach((e) => {\n      s = `${s}${e[0]}`;\n    });\n    return s;\n  }","time":{"average":"0.00352608871459960923ms","minimum":"0.00234603881835937500ms","maximum":"0.30611801147460937500ms"}},{"description":"for property in object loop","keywords":["for","forin","in","iteration","loop","object","property"],"codeSample":"for (const prop in obj) { } => string","code":"(d) => {\n    let s = '';\n    for (const p in d) {\n      s = `${s}${p}`;\n    }\n    return s;\n  }","time":{"average":"0.00217956924438476559ms","minimum":"0.00069046020507812500ms","maximum":"0.15670776367187500000ms"}},{"description":"iterating a Map's keys with for of","keywords":["for","forof","iteration","keys","loop","map","of","property"],"codeSample":"for (prop of Map.keys()) => string","code":"(d) => {\n    let s = '';\n    for (const p of d.keys()) {\n      s = `${s}${p}`;\n    }\n    return s;\n  }","time":{"average":"0.02188346099853515775ms","minimum":"0.01430892944335937500ms","maximum":"0.33903884887695312500ms"}},{"description":"iterating an object's own property names with for of","keywords":["for","forof","getownpropertynames","loop","names","object","of","own","ownproperties","ownpropertynames","ownprops","property"],"codeSample":"for (prop of Object.getOwnPropertyNames(obj)) => string","code":"(d) => {\n    let s = '';\n    for (const p of Object.getOwnPropertyNames(d)) {\n      s = `${s}${p}`;\n    }\n    return s;\n  }","time":{"average":"0.00224037170410156233ms","minimum":"0.00180435180664062500ms","maximum":"0.12458801269531250000ms"}},{"description":"iterating an object's keys with for of","keywords":["for","forof","iteration","keys","loop","object","of","property"],"codeSample":"for (prop of Object.keys(obj)) => string","code":"(d) => {\n    let s = '';\n    for (const p of Object.keys(d)) {\n      s = `${s}${p}`;\n    }\n    return s;\n  }","time":{"average":"0.00225612258911132802ms","minimum":"0.00180435180664062500ms","maximum":"0.12448501586914062500ms"}},{"description":"iterating an object's keys in a for of loop with own-property check","keywords":["check","for","forof","hasownperperty","iteration","keys","loop","object","of","own","ownproperty","property"],"codeSample":"for (prop of Object.keys(obj)) { obj.hasOwnProperty(prop) && ... }","code":"(d) => {\n    let s = '';\n    for (const p of Object.keys(d)) {\n      if (d.hasOwnProperty(p)) { // eslint-disable-line\n        s = `${s}${p}`;\n      }\n    }\n    return s;\n  }","time":{"average":"0.00205638122558593744ms","minimum":"0.00147628784179687500ms","maximum":"0.12617111206054687500ms"}},{"description":"iterating an object's keys with forEach","keywords":["foreach","iteration","keys","loop","object","property"],"codeSample":"Object.keys(obj).forEach() => string","code":"(d) => {\n    let s = '';\n    Object.keys(d).forEach((p) => {\n      s = `${s}${p}`;\n    });\n    return s;\n  }","time":{"average":"0.00208233642578124984ms","minimum":"0.00152969360351562500ms","maximum":"0.13388061523437500000ms"}},{"description":"iterating an object's own property names with forEach","keywords":["foreach","getownpropertynames","loop","names","names","object","own","ownproperties","ownpropertynames","ownprops","property"],"codeSample":"Object.getOwnPropertyNames(obj).forEach() => string","code":"(d) => {\n    let s = '';\n    Object.getOwnPropertyNames(d).forEach((p) => {\n      s = `${s}${p}`;\n    });\n    return s;\n  }","time":{"average":"0.00180145263671875003ms","minimum":"0.00146102905273437500ms","maximum":"0.12953948974609375000ms"}}],"fastest":[{"description":"iterating an object's own property names with forEach","keywords":["foreach","getownpropertynames","loop","names","names","object","own","ownproperties","ownpropertynames","ownprops","property"],"codeSample":"Object.getOwnPropertyNames(obj).forEach() => string","code":"(d) => {\n    let s = '';\n    Object.getOwnPropertyNames(d).forEach((p) => {\n      s = `${s}${p}`;\n    });\n    return s;\n  }","time":{"average":"0.00180145263671875003ms","minimum":"0.00146102905273437500ms","maximum":"0.12953948974609375000ms"}}]},{"name":"map:creation","description":"Object literal vs. Map: creating a map.","keywords":["construtor","creation","defineProperties","defineProperty","key-value","literal","map","object","pairs","properties","set","spread","syntax"],"functions":[{"description":"passing key-value pairs to the Map constructor","keywords":["construtor","creation","key-value","map","pairs"],"codeSample":"new Map([props])","code":"(d) => new Map(d.map((dp, i) => [i, dp]))","time":{"average":"0.12192337799072265614ms","minimum":"0.10734176635742187500ms","maximum":"0.47495651245117187500ms"}},{"description":"Object's definePropety() method on an Object literal","keywords":["creation","defineProperty","literal","map","object","properties"],"codeSample":"Object.defineProperty({}, prop, desc)","code":"(d) => {\n    const m = {};\n    d.forEach((dp, i) =>\n      Object.defineProperty(m, i, {\n        value: dp,\n        enumerable: true\n      })\n    );\n    return m;\n  }","time":{"average":"0.45674309539794921697ms","minimum":"0.41310882568359375000ms","maximum":"1.20526504516601562500ms"}},{"description":"Object's defineProperties method on an Object literal","keywords":["creation","defineProperties","literal","map","object","properties"],"codeSample":"Object.defineProperties({}, props)","code":"(d) => {\n    const m = {};\n    Object.defineProperties(m, d.reduce((props, dp, i) =>\n      Object.assign(props, {\n        [i]: {\n          value: dp,\n          enumerable: true\n        }\n      }), {}));\n    return m;\n  }","time":{"average":"4.38844331741332993602ms","minimum":"3.68781661987304687500ms","maximum":"14.68229293823242187500ms"}},{"description":"Map.set() in a forEach loop","keywords":["creation","map","set"],"codeSample":"Map.set()","code":"(d) => {\n    const m = new Map();\n    d.forEach((dp, i) => m.set(i, dp));\n    return m;\n  }","time":{"average":"0.09009991455078124323ms","minimum":"0.08505249023437500000ms","maximum":"0.27699661254882812500ms"}},{"description":"setting properties on an Object literal","keywords":["creation","literal","map","object","properties"],"codeSample":"{}.prop = val","code":"(d) => {\n    const m = {};\n    d.forEach((dp, i) => m[i] = dp);\n    return m;\n  }","time":{"average":"0.03384191513061523410ms","minimum":"0.03011322021484375000ms","maximum":"0.28208923339843750000ms"}},{"description":"object spread syntax","keywords":["creation","literal","map","object","properties","spread","syntax"],"codeSample":"{ ...props }","code":"(d) => ({\n    ...d\n  })","time":{"average":"0.27703066253662111951ms","minimum":"0.26528549194335937500ms","maximum":"0.51094055175781250000ms"}}],"fastest":[{"description":"setting properties on an Object literal","keywords":["creation","literal","map","object","properties"],"codeSample":"{}.prop = val","code":"(d) => {\n    const m = {};\n    d.forEach((dp, i) => m[i] = dp);\n    return m;\n  }","time":{"average":"0.03384191513061523410ms","minimum":"0.03011322021484375000ms","maximum":"0.28208923339843750000ms"}}]},{"name":"map:access","description":"Object literal vs. Map: retrieving values.","keywords":["access",["access","map","object","property"],"get","map"],"functions":[{"description":"Map's get() method","keywords":["access","get","map"],"codeSample":"Map.get()","code":"(d) => d.get(randInt(d.size - 1))","time":{"average":"0.00209311294555664064ms","minimum":"0.00174331665039062500ms","maximum":"0.10953521728515625000ms"}},{"description":"access object property","keywords":["access","map","object","property"],"codeSample":"{}.prop","code":"(d) => d[randInt(d.size - 1)]","time":{"average":"0.00190370559692382819ms","minimum":"0.00170135498046875000ms","maximum":"0.03023529052734375000ms"}}],"fastest":[{"description":"access object property","keywords":["access","map","object","property"],"codeSample":"{}.prop","code":"(d) => d[randInt(d.size - 1)]","time":{"average":"0.00190370559692382819ms","minimum":"0.00170135498046875000ms","maximum":"0.03023529052734375000ms"}}]},{"name":"loops","description":"Loop variations: Converting an array of integers into an array of booleans satisfying a conjunction of two simple relational operations.","keywords":["array","do","for","foreach","inverse","iteration","length","loop","map","object","of","property","push","variable","while"],"functions":[{"description":"forEach loop","keywords":["array","foreach","iteration","loop","push"],"codeSample":"[].forEach((d) => [].push(d)) => []","code":"(d) => {\n    const r = [];\n    d.forEach((dp) => r.push(dp < 5 && dp > 3));\n    return r;\n  }","time":{"average":"0.04686426162719726368ms","minimum":"0.03151702880859375000ms","maximum":"0.22405624389648437500ms"}},{"description":"for loop","keywords":["array","for","iteration","loop","push"],"codeSample":"for(i < d.length; i++) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    let dp;\n    for (let i = 0; i < d.length; i++) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n    }\n\n    return r;\n  }","time":{"average":"0.02725104904174804540ms","minimum":"0.01971817016601562500ms","maximum":"0.54459381103515625000ms"}},{"description":"for loop with length variable","keywords":["array","for","iteration","length","loop","push","variable"],"codeSample":"for(i < len; i++) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    const len = d.length;\n    let dp;\n    for (let i = 0; i < len; i++) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n    }\n\n    return r;\n  }","time":{"average":"0.02722823715209960957ms","minimum":"0.01992797851562500000ms","maximum":"0.32872772216796875000ms"}},{"description":"for of loop","keywords":["array","for","iteration","loop","object","of","property","push"],"codeSample":"for (prop of []) { [].push(prop) } => []","code":"(d) => {\n    const r = [];\n    for (const p of d) {\n      r.push(p < 5 && p > 3);\n    }\n\n    return r;\n  }","time":{"average":"0.02630469512939453275ms","minimum":"0.02011489868164062500ms","maximum":"0.30126571655273437500ms"}},{"description":"inverse while loop","keywords":["array","inverse","iteration","loop","push","while"],"codeSample":"while(i--) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    let i = d.length;\n    let dp;\n    while (i--) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n    }\n\n    return r.reverse();\n  }","time":{"average":"0.02699669647216796850ms","minimum":"0.02328872680664062500ms","maximum":"0.24392700195312500000ms"}},{"description":"map","keywords":["array","iteration","loop","map"],"codeSample":"[].map() => []","code":"(d) => d.map((dp) => dp < 5 && dp > 3)","time":{"average":"0.01870209121704101418ms","minimum":"0.01654434204101562500ms","maximum":"0.14411544799804687500ms"}},{"description":"while loop","keywords":["array","inverse","iteration","loop","push","while"],"codeSample":"while(i < d.length) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    let i = 0;\n    let dp;\n    while (i < d.length) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n      i++;\n    }\n\n    return r;\n  }","time":{"average":"0.02346826553344726410ms","minimum":"0.01876449584960937500ms","maximum":"0.20367050170898437500ms"}},{"description":"while loop with length variable","keywords":["array","iteration","length","loop","push","variable","while"],"codeSample":"while(i < len) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    const len = d.length;\n    let i = 0;\n    let dp;\n    while (i < len) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n      i++;\n    }\n\n    return r;\n  }","time":{"average":"0.02406631851196289196ms","minimum":"0.01927185058593750000ms","maximum":"0.20761871337890625000ms"}},{"description":"do while loop","keywords":["array","do","iteration","loop","push","while"],"codeSample":"do { [].push(d[i]) } while (i < d.length) => []","code":"(d) => {\n    const r = [];\n    let i = 0;\n    let dp;\n    do {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n      i++;\n    } while (i < d.length);\n\n    return r;\n  }","time":{"average":"0.02523860168457031303ms","minimum":"0.01950073242187500000ms","maximum":"1.89942169189453125000ms"}},{"description":"do while loop with length variable","keywords":["array","do","iteration","length","loop","push","variable","while"],"codeSample":"do { [].push(d[i]) } while (i < len) => []","code":"(d) => {\n    const r = [];\n    let i = 0;\n    const len = d.length;\n    let dp;\n    do {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n      i++;\n    } while (i < len);\n\n    return r;\n  }","time":{"average":"0.02336872100830078222ms","minimum":"0.01955032348632812500ms","maximum":"0.20964813232421875000ms"}}],"fastest":[{"description":"map","keywords":["array","iteration","loop","map"],"codeSample":"[].map() => []","code":"(d) => d.map((dp) => dp < 5 && dp > 3)","time":{"average":"0.01870209121704101418ms","minimum":"0.01654434204101562500ms","maximum":"0.14411544799804687500ms"}}]},{"name":"guards","description":"Variable guards: checking whether a variable is defined or of a certain type.","keywords":["!","!!","array","bool","boolean","check","comparison","defined","double","equality","existence","function","global","hasownproperty","identity","in","isArray","isnan","loose","method","nan","negation","not","not a number","notnot","null","number","object","operator","prop","property","prototype","strict","string","target","triple equals","tripple equals","type","typeof","undefined"],"functions":[{"description":"strict comparison using typeof against 'undefined'","keywords":["check","comparison","defined","equality","identity","operator","strict","triple equals","type","typeof","undefined"],"codeSample":"typeof d !== 'undefined'","code":"(d) => typeof d !== 'undefined'","time":{"average":"0.00063861465454101559ms","minimum":"0.00049591064453125000ms","maximum":"0.07733535766601562500ms"}},{"description":"loose comparison using typeof against 'undefined'","keywords":["check","comparison","defined","equality","identity","loose","operator","triple equals","type","typeof","undefined"],"codeSample":"typeof d != 'undefined'","code":"(d) => typeof d != 'undefined'","time":{"average":"0.00076829910278320313ms","minimum":"0.00047683715820312500ms","maximum":"0.07849121093750000000ms"}},{"description":"strict comparison using typeof against 'function'","keywords":["comparison","equality","function","identity","operator","strict","tripple equals","type","typeof"],"codeSample":"typeof d === 'function'","code":"(d) => typeof d === 'function'","time":{"average":"0.00105611419677734369ms","minimum":"0.00074005126953125000ms","maximum":"0.07335662841796875000ms"}},{"description":"loose comparison using typeof against 'function'","keywords":["comparison","equality","function","identity","loose","operator","tripple equals","type","typeof"],"codeSample":"typeof d == 'function'","code":"(d) => typeof d == 'function'","time":{"average":"0.00082825469970703130ms","minimum":"0.00056076049804687500ms","maximum":"0.04738998413085937500ms"}},{"description":"strict comparison using typeof against 'number'","keywords":["comparison","equality","identity","number","operator","strict","tripple equals","type","typeof"],"codeSample":"typeof d === 'number'","code":"(d) => typeof d === 'number'","time":{"average":"0.00072882843017578122ms","minimum":"0.00053405761718750000ms","maximum":"0.03485107421875000000ms"}},{"description":"loose comparison using typeof against 'number'","keywords":["comparison","equality","identity","loose","number","operator","tripple equals","type","typeof"],"codeSample":"typeof d == 'number'","code":"(d) => typeof d == 'number'","time":{"average":"0.00075378036499023434ms","minimum":"0.00053405761718750000ms","maximum":"0.04341506958007812500ms"}},{"description":"strict comparison using typeof against 'object'","keywords":["comparison","equality","identity","object","operator","strict","tripple equals","type","typeof"],"codeSample":"typeof d === 'object'","code":"(d) => typeof d === 'object'","time":{"average":"0.00063101196289062499ms","minimum":"0.00051879882812500000ms","maximum":"0.03074645996093750000ms"}},{"description":"loose comparison using typeof against 'object'","keywords":["comparison","equality","identity","loose","object","operator","tripple equals","type","typeof"],"codeSample":"typeof d === 'object'","code":"(d) => typeof d == 'object'","time":{"average":"0.00063620758056640622ms","minimum":"0.00051498413085937500ms","maximum":"0.03473281860351562500ms"}},{"description":"strict comparison using typeof against 'string'","keywords":["comparison","equality","identity","operator","strict","string","tripple equals","type","typeof"],"codeSample":"typeof d === 'string'","code":"(d) => typeof d === 'string'","time":{"average":"0.00060845947265624996ms","minimum":"0.00051879882812500000ms","maximum":"0.02747344970703125000ms"}},{"description":"loose comparison using typeof against 'string'","keywords":["comparison","equality","identity","loose","operator","string","tripple equals","type","typeof"],"codeSample":"typeof d == 'string'","code":"(d) => typeof d == 'string'","time":{"average":"0.00062984466552734380ms","minimum":"0.00051498413085937500ms","maximum":"0.02825546264648437500ms"}},{"description":"Array's isArray() method","keywords":["array","comparison","equality","identity","isArray","method","type"],"codeSample":"Array.isArray(d)","code":"(d) => Array.isArray(d)","time":{"average":"0.00077709579467773442ms","minimum":"0.00061416625976562500ms","maximum":"0.04872131347656250000ms"}},{"description":"double negation, !!, \"not, not\"","keywords":["!","!!","bool","boolean","defined","double","negation","not","notnot","operator","type"],"codeSample":"!!var","code":"(d) => !!d","time":{"average":"0.00069165802001953122ms","minimum":"0.00051879882812500000ms","maximum":"0.04611587524414062500ms"}},{"description":"negation, !, \"not\"","keywords":["!","bool","boolean","defined","negation","not","operator","type"],"codeSample":"!var","code":"(d) => !d","time":{"average":"0.00091614151000976563ms","minimum":"0.00073623657226562500ms","maximum":"0.05409240722656250000ms"}},{"description":"global isNaN() method","keywords":["defined","global","isnan","method","not","not a number","number","type"],"codeSample":"isNaN(var)","code":"(d) => isNaN(d)","time":{"average":"0.06459632110595703303ms","minimum":"0.05253219604492187500ms","maximum":"1.26232528686523437500ms"}},{"description":"Number's isNaN() method","keywords":["defined","isnan","method","not","not a number","number","type"],"codeSample":"Number.isNaN(var)","code":"(d) => Number.isNaN(d)","time":{"average":"0.00087814331054687496ms","minimum":"0.00063323974609375000ms","maximum":"0.07942581176757812500ms"}},{"description":"negated global isNaN()","keywords":["defined","global","isnan","method","nan","not","not a number","number","type"],"codeSample":"!isNaN(var)","code":"(d) => !isNaN(d)","time":{"average":"0.05736606597900390653ms","minimum":"0.05258560180664062500ms","maximum":"0.11147689819335937500ms"}},{"description":"negated Number's isNaN() method","keywords":["defined","isnan","method","nan","not","not a number","number","type"],"codeSample":"!Number.isNaN(var)","code":"(d) => !Number.isNaN(d)","time":{"average":"0.00083596038818359373ms","minimum":"0.00064849853515625000ms","maximum":"0.08994674682617187500ms"}},{"description":"the 'in' operator","keywords":["defined","existence","in","object","operator","prop","property","type"],"codeSample":"prop in obj","code":"(d) => 'num' in d","time":{"average":"0.00076564025878906249ms","minimum":"0.00063705444335937500ms","maximum":"0.03786849975585937500ms"}},{"description":"Object's hasOwnProperty() method called on target","keywords":["defined","existence","hasownproperty","method","object","prop","property","prototype","target","type"],"codeSample":"obj.hasOwnProperty(prop)","code":"(d) => d.hasOwnProperty('num')","time":{"average":"0.00082205581665039068ms","minimum":"0.00069046020507812500ms","maximum":"0.04575729370117187500ms"}},{"description":"Object's hasOwnProperty() method called from Object prototype","keywords":["defined","existence","hasownproperty","method","object","prop","property","prototype","type"],"codeSample":"Object.prototype.hasOwnProperty.call(obj, prop)","code":"(d) => Object.prototype.hasOwnProperty.call(d, 'num')","time":{"average":"0.00096114730834960939ms","minimum":"0.00079345703125000000ms","maximum":"0.07371902465820312500ms"}},{"description":"strict comparison against null and undefined","keywords":["check","comparison","defined","equality","identity","null","operator","strict","tripple equals","undefined"],"codeSample":"!(d === undefined || d === null)","code":"(d) => !(d === undefined || d === null)","time":{"average":"0.00069865417480468749ms","minimum":"0.00057601928710937500ms","maximum":"0.04415512084960937500ms"}},{"description":"loose comparison against null and undefined","keywords":["check","comparison","defined","equality","identity","loose","null","operator","tripple equals","undefined"],"codeSample":"!(d == undefined || d == null)","code":"(d) => !(d == undefined || d == null)","time":{"average":"0.00067676544189453124ms","minimum":"0.00054931640625000000ms","maximum":"0.03039932250976562500ms"}}],"fastest":[{"description":"strict comparison using typeof against 'string'","keywords":["comparison","equality","identity","operator","strict","string","tripple equals","type","typeof"],"codeSample":"typeof d === 'string'","code":"(d) => typeof d === 'string'","time":{"average":"0.00060845947265624996ms","minimum":"0.00051879882812500000ms","maximum":"0.02747344970703125000ms"}}]},{"name":"(de-)composition","description":"(De-)composing objects, variables and arrays from each other.","keywords":["array","assignment","composition","decomposition","default","destructuring","object","rest","swap","tail","values","variables"],"functions":[{"description":"Destructuring an Array","keywords":["array","assignment","composition","decomposition","destructuring"],"codeSample":"const [a,b] = arr","code":"(d) => {\n    const [a, b] = d;\n  }","time":{"average":"0.00126216888427734377ms","minimum":"0.00095367431640625000ms","maximum":"0.08448410034179687500ms"}},{"description":"Destructuring an Array with default values","keywords":["array","assignment","composition","decomposition","default","destructuring","values"],"codeSample":"const [a = i, b] = arr","code":"(d) => {\n    const [a = 5, b] = d;\n  }","time":{"average":"0.00124388504028320312ms","minimum":"0.00095367431640625000ms","maximum":"0.08216476440429687500ms"}},{"description":"Destructuring an Array with tail","keywords":["array","assignment","composition","decomposition","destructuring","rest","tail"],"codeSample":"const [a,b, ...tail] = arr","code":"(d) => {\n    const [a, b, ...tail] = d;\n  }","time":{"average":"0.01274661254882812449ms","minimum":"0.00612640380859375000ms","maximum":"0.37498092651367187500ms"}},{"description":"Destructuring an Object","keywords":["assignment","composition","decomposition","destructuring","object"],"codeSample":"const { a, b } = obj","code":"(d) => {\n    const { num, obj } = d;\n  }","time":{"average":"0.00064960098266601558ms","minimum":"0.00049972534179687500ms","maximum":"0.07085037231445312500ms"}},{"description":"Destructuring an Object with default values","keywords":["assignment","composition","decomposition","default","destructuring","object","values"],"codeSample":"const { a = i } = obj","code":"(d) => {\n    const { num = 5, foo = 'bar' } = d;\n  }","time":{"average":"0.00065837860107421876ms","minimum":"0.00052261352539062500ms","maximum":"0.04325866699218750000ms"}},{"description":"Swapping variables via Array destructuring","keywords":["array","destructuring","swap","variables","composition","decomposition"],"codeSample":"const [a, b] = [b, a]","code":"(d) => {\n    let a = d[0];\n    let b = d[1];\n    [a, b] = [b, a];\n  }","time":{"average":"0.00155385589599609376ms","minimum":"0.00122070312500000000ms","maximum":"0.07813262939453125000ms"}},{"description":"Assignment from array items","keywords":["array","assignment","composition","decomposition"],"codeSample":"const a = arr[i]","code":"(d) => {\n    const a = d[0];\n    const b = d[1];\n  }","time":{"average":"0.00065757751464843748ms","minimum":"0.00051498413085937500ms","maximum":"0.03900146484375000000ms"}},{"description":"Assignment from array items with default","keywords":["array","assignment","composition","decomposition","default","values"],"codeSample":"const a = arr[i] || j","code":"(d) => {\n    const a = d[0] || 5;\n    const b = d[1];\n  }","time":{"average":"0.00079307937622070316ms","minimum":"0.00056076049804687500ms","maximum":"0.06126785278320312500ms"}},{"description":"Assignment from object properties","keywords":["assignment","composition","decomposition","object"],"codeSample":"const a = obj.b","code":"(d) => {\n    const str = d.obj.str;\n  }","time":{"average":"0.00060367584228515625ms","minimum":"0.00046539306640625000ms","maximum":"0.05602645874023437500ms"}},{"description":"Assignment from object properties with default","keywords":["assignment","composition","decomposition","default","object","values"],"codeSample":"const a = obj.b || i","code":"(d) => {\n    const str = d.obj.foo || 'bar';\n  }","time":{"average":"0.00063158416748046876ms","minimum":"0.00049972534179687500ms","maximum":"0.03918838500976562500ms"}},{"description":"Swapping variables via assignment","keywords":["swap","variables","composition","decomposition"],"codeSample":"const c = b; b = a; a = c;","code":"(d) => {\n    let a = d[0];\n    let b = d[1];\n    const c = b;\n    b = a;\n    a = c;\n  }","time":{"average":"0.00076689910888671879ms","minimum":"0.00052642822265625000ms","maximum":"0.06129837036132812500ms"}}],"fastest":[{"description":"Assignment from object properties","keywords":["assignment","composition","decomposition","object"],"codeSample":"const a = obj.b","code":"(d) => {\n    const str = d.obj.str;\n  }","time":{"average":"0.00060367584228515625ms","minimum":"0.00046539306640625000ms","maximum":"0.05602645874023437500ms"}}]},{"name":"comparison operators","description":"Variable comparison operators.","keywords":["and","boolean","comparison","equal","equality","equals","greater","identity","less","logical","loose","nonequal","not","operator","or","strict","tripple","type"],"functions":[{"description":">, greater than","keywords":["comparison","greater","operator"],"codeSample":"a > b","code":"(d) => d > 5","time":{"average":"0.00074309921264648440ms","minimum":"0.00043869018554687500ms","maximum":"0.03485870361328125000ms"}},{"description":">=, greater than or equal to","keywords":["comparison","equal","greater","operator"],"codeSample":"a >= b","code":"(d) => d >= 5","time":{"average":"0.00078458023071289063ms","minimum":"0.00048065185546875000ms","maximum":"0.04129791259765625000ms"}},{"description":"<, less than","keywords":["comparison","less","operator"],"codeSample":"a < b","code":"(d) => d < 5","time":{"average":"0.00057704925537109379ms","minimum":"0.00047302246093750000ms","maximum":"0.03393936157226562500ms"}},{"description":"<=,less than or equal to","keywords":["comparison","equal","less","operator"],"codeSample":"a <= b","code":"(d) => d <= 5","time":{"average":"0.00066925811767578128ms","minimum":"0.00046157836914062500ms","maximum":"0.03100585937500000000ms"}},{"description":"==, loose equality","keywords":["comparison","equal","equality","loose"],"codeSample":"a == b","code":"(d) => d == 5","time":{"average":"0.00066328430175781252ms","minimum":"0.00050354003906250000ms","maximum":"0.05088043212890625000ms"}},{"description":"===, strict equality, identity, tripple equals","keywords":["comparison","equal","equality","equals","identity","strict","tripple","type"],"codeSample":"a === b","code":"(d) => d === 5","time":{"average":"0.00060702133178710941ms","minimum":"0.00048065185546875000ms","maximum":"0.03413772583007812500ms"}},{"description":"!=, loose non-equality","keywords":["comparison","equal","equality","loose","nonequal","not"],"codeSample":"a != b","code":"(d) => d != 5","time":{"average":"0.00062198257446289065ms","minimum":"0.00050735473632812500ms","maximum":"0.03645324707031250000ms"}},{"description":"!==, strict non-equality","keywords":["comparison","equal","equality","nonequal","not","strict"],"codeSample":"a !== b","code":"(d) => d !== 5","time":{"average":"0.00059736633300781251ms","minimum":"0.00048828125000000000ms","maximum":"0.03096771240234375000ms"}},{"description":"&&, logical and operator","keywords":["and","boolean","comparison","logical","operator"],"codeSample":"a && b","code":"(d) => d && d - 5","time":{"average":"0.00067191314697265627ms","minimum":"0.00051498413085937500ms","maximum":"0.04190826416015625000ms"}},{"description":"||, logical or operator","keywords":["boolean","comparison","logical","operator","or"],"codeSample":"a || b","code":"(d) => d || d - 5","time":{"average":"0.00062342834472656249ms","minimum":"0.00050735473632812500ms","maximum":"0.04617309570312500000ms"}}],"fastest":[{"description":"<, less than","keywords":["comparison","less","operator"],"codeSample":"a < b","code":"(d) => d < 5","time":{"average":"0.00057704925537109379ms","minimum":"0.00047302246093750000ms","maximum":"0.03393936157226562500ms"}}]},{"name":"comparison statements","description":"Comparison statements: conditionally branching in a function based on simple comparisons.","keywords":["and","branching","break","comparison","control flow","control structure","else","else if","expression","flow","if","or","statement","switch","ternary"],"functions":[{"description":"if statement","keywords":["if","comparison","statement","else","else if","branching","control structure","control flow","flow"],"codeSample":"if (d > 0) { return d / 2; }","code":"(d) => {\n    if (d === 0) {\n      return d;\n    } else if (d > 0) {\n      return d / 2;\n    } else {\n      return 0;\n    }\n  }","time":{"average":"0.00085137557983398435ms","minimum":"0.00057983398437500000ms","maximum":"0.05192565917968750000ms"}},{"description":"switch statement","keywords":["switch","comparison","statement","break","branching","control structure","control flow","flow"],"codeSample":"switch (d) { case 0: return d; default: return d / 2; }","code":"(d) => {\n    switch (d) {\n      case 0:\n        return d;\n      default:\n        return d / 2;\n    }\n  }","time":{"average":"0.00114741897583007808ms","minimum":"0.00077819824218750000ms","maximum":"0.09203338623046875000ms"}},{"description":"ternary expression","keywords":["ternary","expression","comparison","statement","branching","control structure","control flow","flow"],"codeSample":"d > 0 ? d / 2 : d","code":"(d) => d > 0 ? d / 2 : d","time":{"average":"0.00095273971557617186ms","minimum":"0.00066757202148437500ms","maximum":"0.07006454467773437500ms"}},{"description":"and-or, && ||","keywords":["and","or","comparison","statement","expression","branching","control structure","control flow","flow"],"codeSample":"(d > 0 && d / 2) || d","code":"(d) => (d > 0 && d / 2) || d","time":{"average":"0.00088220214843750004ms","minimum":"0.00056076049804687500ms","maximum":"0.06400680541992187500ms"}}],"fastest":[{"description":"if statement","keywords":["if","comparison","statement","else","else if","branching","control structure","control flow","flow"],"codeSample":"if (d > 0) { return d / 2; }","code":"(d) => {\n    if (d === 0) {\n      return d;\n    } else if (d > 0) {\n      return d / 2;\n    } else {\n      return 0;\n    }\n  }","time":{"average":"0.00085137557983398435ms","minimum":"0.00057983398437500000ms","maximum":"0.05192565917968750000ms"}}]},{"name":"array copying","description":"Array copying/cloning variations: creating a new array with the same elements as an existing array.","keywords":["append","apply","array","assign","clone","concat","constructor","copy","for","from","insert","literal","loop","method","new","preallocate","prepend","push","set","slice","spread","syntax","unshift"],"functions":[{"description":"Array's slice() method","keywords":["array","clone","copy","method","slice"],"codeSample":"a.slice()","code":"(d) => d[0].slice()","time":{"average":"0.00284874343872070293ms","minimum":"0.00211715698242187500ms","maximum":"0.07365417480468750000ms"}},{"description":"copy using Array spread syntax","keywords":["array","clone","copy","spread","syntax"],"codeSample":"[...a]","code":"(d) => [...d[0]]","time":{"average":"0.00285105133056640613ms","minimum":"0.00204849243164062500ms","maximum":"0.10739135742187500000ms"}},{"description":"copy using Array.from()","keywords":["array","clone","copy","from","method"],"codeSample":"Array.from(a)","code":"(d) => Array.from(d[0])","time":{"average":"0.00328840637207031229ms","minimum":"0.00249862670898437500ms","maximum":"0.08830642700195312500ms"}},{"description":"spread into Array constructor","keywords":["array","clone","copy","new","constructor"],"codeSample":"new Array(...a)","code":"(d) => new Array(...d[0])","time":{"average":"0.00877301025390624968ms","minimum":"0.00634765625000000000ms","maximum":"0.09402084350585937500ms"}},{"description":"concatenate empty Array literal","keywords":["array","clone","copy","concat","method"],"codeSample":"a.concat([])","code":"(d) => d[0].concat([])","time":{"average":"0.00360159683227539041ms","minimum":"0.00259399414062500000ms","maximum":"0.20311737060546875000ms"}},{"description":"concatenate onto empty Array literal","keywords":["array","clone","copy","concat","method"],"codeSample":"[].concat(a)","code":"(d) => [].concat(d[0])","time":{"average":"0.00325069427490234366ms","minimum":"0.00246810913085937500ms","maximum":"0.06889724731445312500ms"}},{"description":"prepend to empty Array literal","keywords":["array","clone","copy","literal","apply","unshift","prepend","insert"],"codeSample":"b = []; Array.prototype.unshift.apply(b, a)","code":"(d) => {\n    const b = [];\n    Array.prototype.unshift.apply(b, d[0]);\n    return b;\n  }","time":{"average":"0.00840603637695312537ms","minimum":"0.00615692138671875000ms","maximum":"0.13029479980468750000ms"}},{"description":"prepend to constructed Array","keywords":["array","clone","copy","preallocate","apply","unshift","prepend","insert","constructor","new"],"codeSample":"b = new Array(); Array.prototype.unshift.apply(b, a)","code":"(d) => {\n    const b = new Array();\n    Array.prototype.unshift.apply(b, d[0]);\n    return b;\n  }","time":{"average":"0.00768756484985351572ms","minimum":"0.00577163696289062500ms","maximum":"0.10373687744140625000ms"}},{"description":"append to Array literal using spread","keywords":["array","clone","copy","literal","apply","push","spread","append","insert"],"codeSample":"b = []; b.push(...a)","code":"(d) => {\n    const b = [];\n    b.push(...d[0]);\n    return b;\n  }","time":{"average":"0.00480982589721679673ms","minimum":"0.00392532348632812500ms","maximum":"0.08787918090820312500ms"}},{"description":"append to constructed Array in a for loop","keywords":["array","clone","copy","preallocate","constructor","new","push","append","insert"],"codeSample":"b = new Array(); for (...) { b.push(a[i]) }","code":"(d) => {\n    const a = d[0];\n    const b = new Array();\n    const { length } = a;\n    for (let i = 0; i < length; i++) {\n      b.push(a[i]);\n    }\n\n    return b;\n  }","time":{"average":"0.01235222625732421836ms","minimum":"0.00724029541015625000ms","maximum":"0.22974014282226562500ms"}},{"description":"append to constructed Array using spread","keywords":["array","clone","copy","preallocate","constructor","new","push","spread","append","insert"],"codeSample":"b = new Array(); b.push(...a)","code":"(d) => {\n    const b = new Array();\n    b.push(...d[0]);\n    return b;\n  }","time":{"average":"0.00508034896850585900ms","minimum":"0.00400924682617187500ms","maximum":"0.09470748901367187500ms"}},{"description":"append to Array literal in a for loop","keywords":["array","clone","copy","push","for","loop","append","insert","literal"],"codeSample":"b = []; for (...) { b.push(a[i]) }","code":"(d) => {\n    const a = d[0];\n    const b = [];\n    const { length } = a;\n    for (let i = 0; i < length; ++i) {\n      b.push(a[i]);\n    }\n\n    return b;\n  }","time":{"average":"0.01402901840209960956ms","minimum":"0.00767898559570312500ms","maximum":"0.19804382324218750000ms"}},{"description":"preallocate new Array and assign values in a for loop","keywords":["array","clone","copy","preallocate","set","for","loop","assign","constructor","new"],"codeSample":"b = new Array(a.length); for (...) { b[i] = a[i]; }","code":"(d) => {\n    const a = d[0];\n    const { length } = a;\n    const b = new Array(length);\n    for (let i = 0; i < length; ++i) {\n      b[i] = a[i];\n    }\n\n    return b;\n  }","time":{"average":"0.00570813369750976587ms","minimum":"0.00265502929687500000ms","maximum":"0.23403549194335937500ms"}}],"fastest":[{"description":"Array's slice() method","keywords":["array","clone","copy","method","slice"],"codeSample":"a.slice()","code":"(d) => d[0].slice()","time":{"average":"0.00284874343872070293ms","minimum":"0.00211715698242187500ms","maximum":"0.07365417480468750000ms"}}]},{"name":"array concatenation","description":"Array concatenation variations: Combining two arrays using different techniques.","keywords":["append","apply","array","concat","concatenation","for","insert","loop","method","prepend","push","reduce","reduceright","spread","syntax","unshift"],"functions":[{"description":"Array's concat() method","keywords":["array","concat","concatenation","method"],"codeSample":"a.concat(b)","code":"(d) => d[0].concat(d[1])","time":{"average":"0.00542659378051757804ms","minimum":"0.00431823730468750000ms","maximum":"0.09377670288085937500ms"}},{"description":"append elements in a for loop","keywords":["append","array","concatenation","for","insert","loop","push"],"codeSample":"for (...) { a.push(b[i]) }","code":"(d) => {\n    for (let i = 0; i < d[1].length; i++) {\n      d[0].push(d[1][i]);\n    }\n\n    return d[0];\n  }","time":{"average":"0.05483469009399413729ms","minimum":"0.00688171386718750000ms","maximum":"17.53361892700195312500ms"}},{"description":"prepend elements in a foor loop","keywords":["array","concatenation","for","insert","loop","prepend","unshift"],"codeSample":"for (...) { b.unshift(a[i]) }","code":"(d) => {\n    for (let i = d[0].length - 1; i >= 0; i--) {\n      d[1].unshift(d[0][i]);\n    }\n\n    return d[1];\n  }","time":{"average":"1444.27675349426272077835ms","minimum":"4.70043563842773437500ms","maximum":"2921.79241561889648437500ms"}},{"description":"append elements using apply()","keywords":["append","apply","array","concatenation","insert","push"],"codeSample":"a.push.apply(a, b)","code":"(d) => {\n    d[0].push.apply(d[0], d[1]);\n    return d[0];\n  }","time":{"average":"0.05884983825683593600ms","minimum":"0.00246047973632812500ms","maximum":"16.04060745239257812500ms"}},{"description":"prepend elements using apply()","keywords":["apply","array","concatenation","insert","prepend","unshift"],"codeSample":"b.unshift.apply(b, a)","code":"(d) => {\n    d[1].unshift.apply(d[1], d[0]);\n    return d[1];\n  }","time":{"average":"1.42897520065307626069ms","minimum":"0.00820922851562500000ms","maximum":"7.83862304687500000000ms"}},{"description":"append elements using reduce()","keywords":["append","array","concatenation","insert","push","reduce"],"codeSample":"b.reduce((arr, item) => arr.push(item), a)","code":"(d) => d[1].reduce((r, i) => {\n    r.push(i);\n    return r;\n  }, d[0])","time":{"average":"0.06597388839721679554ms","minimum":"0.01630020141601562500ms","maximum":"11.00511169433593750000ms"}},{"description":"prepend elements using reduceRight()","keywords":["array","concatenation","insert","prepend","reduce","reduceright","unshift"],"codeSample":"a.reduceRight((arr, item) => arr.unshift(item), b)","code":"(d) => d[0].reduceRight((r, i) => {\n    r.unshift(i);\n    return r;\n  }, d[1])","time":{"average":"1443.23156035614010761492ms","minimum":"4.47480392456054687500ms","maximum":"2913.65879058837890625000ms"}},{"description":"prepend elements using array spread syntax","keywords":["array","concatenation","insert","prepend","spread","syntax"],"codeSample":"[...a, ...b]","code":"(d) => [...d[0], ...d[1]]","time":{"average":"0.03758349609375000178ms","minimum":"0.00809860229492187500ms","maximum":"1.13868331909179687500ms"}}],"fastest":[{"description":"Array's concat() method","keywords":["array","concat","concatenation","method"],"codeSample":"a.concat(b)","code":"(d) => d[0].concat(d[1])","time":{"average":"0.00542659378051757804ms","minimum":"0.00431823730468750000ms","maximum":"0.09377670288085937500ms"}}]}],"createdAt":"2026-09-13T04:38:44.082Z"}