Do nothing at the beginning, cold hardware vs Constant binding to literal vs Constant binding to constant vs Constant binding to variable vs Constant binding to array vs Constant reverse binding to array vs Variable binding to literal vs Variable binding to constant vs Variable binding to variable vs Variable binding to array vs Variable reverse binding to array vs Variable assignment to literal vs Variable assignment to constant vs Variable assignment to variable vs Variable assignment to array vs Variable reverse assignment to array vs Array assignment to literal vs Array reverse assignment to literal vs Array assignment to constant vs Array reverse assignment to constant vs Array assignment to variable vs Array reverse assignment to variable vs Array assignment to array vs Array reverse assignment to array vs Conditional variable assignment to literal !== vs Conditional variable assignment to constant !== vs Conditional variable assignment to variable !== vs Conditional variable assignment to array !== vs Conditional variable reverse assignment to array !== vs Conditional array assignment to literal !== vs Conditional array reverse assignment to literal !== vs Conditional array assignment to constant !== vs Conditional array reverse assignment to constant !== vs Conditional array assignment to variable !== vs Conditional array reverse assignment to variable !== vs Conditional array assignment to array !== vs Conditional array reverse assignment to array !== vs Conditional variable assignment to literal Object.is() vs Conditional variable assignment to constant Object.is() vs Conditional variable assignment to variable Object.is() vs Conditional variable assignment to array Object.is() vs Conditional variable reverse assignment to array Object.is() vs Conditional array assignment to literal Object.is() vs Conditional array reverse assignment to literal Object.is() vs Conditional array assignment to constant Object.is() vs Conditional array reverse assignment to constant Object.is() vs Conditional array assignment to variable Object.is() vs Conditional array reverse assignment to variable Object.is() vs Conditional array assignment to array Object.is() vs Conditional array reverse assignment to array Object.is() vs Loop from start with literal length vs Loop from end with literal length vs Loop from start with constant length vs Loop from end with constant length vs Loop from start with constant first length vs Loop from end with constant first length vs Loop from start with constant second length vs Loop from end with constant second length vs Loop from start with variable first length vs Loop from end with variable first length vs Loop from start with variable second length vs Loop from end with variable second length vs Loop from start re-evaluating first length vs Loop from end evaluating first length vs Loop from start re-evaluating second length vs Loop from end evaluating second length vs Loop in first vs Loop in second vs Loop of first vs Loop of second vs .forEach() on first vs .forEach() on first closure vs .forEach() on second vs .forEach() on second closure vs Array-destructuring constant binding vs Array-destructuring variable binding vs Array-destructuring variable assignment vs Array-destructuring element assignment vs Array-destructuring rest assignment vs Object-destructuring constant binding with numbers vs Object-destructuring reverse constant binding with numbers vs Object-destructuring variable binding with numbers vs Object-destructuring reverse variable binding with numbers vs Object-destructuring variable assignment with numbers vs Object-destructuring reverse variable assignment with numbers vs Object-destructuring element assignment with numbers vs Object-destructuring reverse element assignment with numbers vs Object-destructuring constant binding with strings vs Object-destructuring reverse constant binding with strings vs Object-destructuring variable binding with strings vs Object-destructuring reverse variable binding with strings vs Object-destructuring variable assignment with strings vs Object-destructuring reverse variable assignment with strings vs Object-destructuring element assignment with strings vs Object-destructuring reverse element assignment with strings vs Object-destructuring rest assignment vs Object.assign() vs Do nothing at the end, warm hardware| Test case name | Result |
|---|---|
| Do nothing at the beginning, cold hardware | |
| Constant binding to literal | |
| Constant binding to constant | |
| Constant binding to variable | |
| Constant binding to array | |
| Constant reverse binding to array | |
| Variable binding to literal | |
| Variable binding to constant | |
| Variable binding to variable | |
| Variable binding to array | |
| Variable reverse binding to array | |
| Variable assignment to literal | |
| Variable assignment to constant | |
| Variable assignment to variable | |
| Variable assignment to array | |
| Variable reverse assignment to array | |
| Array assignment to literal | |
| Array reverse assignment to literal | |
| Array assignment to constant | |
| Array reverse assignment to constant | |
| Array assignment to variable | |
| Array reverse assignment to variable | |
| Array assignment to array | |
| Array reverse assignment to array | |
| Conditional variable assignment to literal !== | |
| Conditional variable assignment to constant !== | |
| Conditional variable assignment to variable !== | |
| Conditional variable assignment to array !== | |
| Conditional variable reverse assignment to array !== | |
| Conditional array assignment to literal !== | |
| Conditional array reverse assignment to literal !== | |
| Conditional array assignment to constant !== | |
| Conditional array reverse assignment to constant !== | |
| Conditional array assignment to variable !== | |
| Conditional array reverse assignment to variable !== | |
| Conditional array assignment to array !== | |
| Conditional array reverse assignment to array !== | |
| Conditional variable assignment to literal Object.is() | |
| Conditional variable assignment to constant Object.is() | |
| Conditional variable assignment to variable Object.is() | |
| Conditional variable assignment to array Object.is() | |
| Conditional variable reverse assignment to array Object.is() | |
| Conditional array assignment to literal Object.is() | |
| Conditional array reverse assignment to literal Object.is() | |
| Conditional array assignment to constant Object.is() | |
| Conditional array reverse assignment to constant Object.is() | |
| Conditional array assignment to variable Object.is() | |
| Conditional array reverse assignment to variable Object.is() | |
| Conditional array assignment to array Object.is() | |
| Conditional array reverse assignment to array Object.is() | |
| Loop from start with literal length | |
| Loop from end with literal length | |
| Loop from start with constant length | |
| Loop from end with constant length | |
| Loop from start with constant first length | |
| Loop from end with constant first length | |
| Loop from start with constant second length | |
| Loop from end with constant second length | |
| Loop from start with variable first length | |
| Loop from end with variable first length | |
| Loop from start with variable second length | |
| Loop from end with variable second length | |
| Loop from start re-evaluating first length | |
| Loop from end evaluating first length | |
| Loop from start re-evaluating second length | |
| Loop from end evaluating second length | |
| Loop in first | |
| Loop in second | |
| Loop of first | |
| Loop of second | |
| .forEach() on first | |
| .forEach() on first closure | |
| .forEach() on second | |
| .forEach() on second closure | |
| Array-destructuring constant binding | |
| Array-destructuring variable binding | |
| Array-destructuring variable assignment | |
| Array-destructuring element assignment | |
| Array-destructuring rest assignment | |
| Object-destructuring constant binding with numbers | |
| Object-destructuring reverse constant binding with numbers | |
| Object-destructuring variable binding with numbers | |
| Object-destructuring reverse variable binding with numbers | |
| Object-destructuring variable assignment with numbers | |
| Object-destructuring reverse variable assignment with numbers | |
| Object-destructuring element assignment with numbers | |
| Object-destructuring reverse element assignment with numbers | |
| Object-destructuring constant binding with strings | |
| Object-destructuring reverse constant binding with strings | |
| Object-destructuring variable binding with strings | |
| Object-destructuring reverse variable binding with strings | |
| Object-destructuring variable assignment with strings | |
| Object-destructuring reverse variable assignment with strings | |
| Object-destructuring element assignment with strings | |
| Object-destructuring reverse element assignment with strings | |
| Object-destructuring rest assignment | |
| Object.assign() | |
| Do nothing at the end, warm hardware |
| Test name | Executions per second |
|---|---|
| ✓ Variable binding to literal | 62,922,236 Ops/sec |
| Constant binding to literal | 57,676,348 Ops/sec |
| Do nothing (leave at the end, hardware is warmed up) | 57,665,884 Ops/sec |
| Do nothing (leave at the beginning, hardware warm up) | 57,478,832 Ops/sec |
| Object-destructuring variable binding with numbers | 49,794,924 Ops/sec |
| Object-destructuring reverse constant binding with strings | 49,764,324 Ops/sec |
| Object-destructuring constant binding with strings | 49,664,060 Ops/sec |
| Object-destructuring reverse variable binding with strings | 49,085,320 Ops/sec |
| Object-destructuring reverse variable binding with numbers | 48,931,360 Ops/sec |
| Object-destructuring variable binding with strings | 45,665,976 Ops/sec |
| Constant binding to variable | 44,917,524 Ops/sec |
| Variable binding to constant | 44,701,200 Ops/sec |
| Variable binding to variable | 44,472,068 Ops/sec |
| Object-destructuring reverse constant binding with numbers | 44,117,768 Ops/sec |
| Array-destructuring constant binding | 43,363,372 Ops/sec |
| Array-destructuring variable binding | 42,272,040 Ops/sec |
| Object-destructuring constant binding with numbers | 39,534,520 Ops/sec |
| Variable binding to array | 38,883,008 Ops/sec |
| Constant binding to array | 38,813,616 Ops/sec |
| Constant binding to constant | 38,365,084 Ops/sec |
| Constant reverse binding to array | 37,950,436 Ops/sec |
| Variable reverse binding to array | 37,504,864 Ops/sec |
| Conditional array assignment to literal !== | 33,255,812 Ops/sec |
| Conditional variable assignment to literal !== | 33,192,938 Ops/sec |
| Conditional array reverse assignment to literal !== | 30,802,484 Ops/sec |
| Array assignment to literal | 29,425,548 Ops/sec |
| Conditional array assignment to variable !== | 28,490,798 Ops/sec |
| Conditional variable assignment to variable !== | 28,372,002 Ops/sec |
| Conditional variable assignment to array !== | 28,110,302 Ops/sec |
| Conditional variable assignment to constant !== | 28,093,182 Ops/sec |
| Conditional variable reverse assignment to array !== | 28,025,650 Ops/sec |
| Array reverse assignment to literal | 27,969,364 Ops/sec |
| Array assignment to constant | 24,637,108 Ops/sec |
| Conditional array reverse assignment to variable !== | 24,140,354 Ops/sec |
| Array reverse assignment to constant | 23,982,702 Ops/sec |
| Object-destructuring reverse element assignment with numbers | 23,307,198 Ops/sec |
| Conditional array reverse assignment to constant !== | 23,299,324 Ops/sec |
| Object-destructuring element assignment with numbers | 22,839,016 Ops/sec |
| Object-destructuring reverse element assignment with strings | 22,832,166 Ops/sec |
| Object-destructuring element assignment with strings | 22,813,556 Ops/sec |
| Conditional array assignment to array !== | 22,638,614 Ops/sec |
| Conditional array assignment to literal Object.is() | 22,211,558 Ops/sec |
| Array reverse assignment to variable | 21,984,274 Ops/sec |
| Array assignment to variable | 21,835,088 Ops/sec |
| Conditional array reverse assignment to literal Object.is() | 21,639,946 Ops/sec |
| Loop of second | 21,630,276 Ops/sec |
| Conditional array reverse assignment to array !== | 21,415,974 Ops/sec |
| Conditional array reverse assignment to variable Object.is() | 21,350,422 Ops/sec |
| Conditional variable assignment to literal Object.is() | 21,240,844 Ops/sec |
| Conditional array reverse assignment to constant Object.is() | 21,210,166 Ops/sec |
| Conditional variable assignment to variable Object.is() | 21,149,526 Ops/sec |
| Conditional array assignment to variable Object.is() | 21,095,758 Ops/sec |
| Conditional array assignment to constant Object.is() | 21,027,210 Ops/sec |
| Conditional array assignment to constant !== | 21,015,598 Ops/sec |
| Conditional variable assignment to constant Object.is() | 20,533,852 Ops/sec |
| Conditional variable assignment to array Object.is() | 20,102,334 Ops/sec |
| Loop from end with constant length | 19,740,880 Ops/sec |
| Loop from start with literal length | 19,614,166 Ops/sec |
| Array reverse assignment to array | 19,444,828 Ops/sec |
| Loop from start with constant length | 19,443,376 Ops/sec |
| Conditional array reverse assignment to array Object.is() | 19,282,466 Ops/sec |
| Conditional array assignment to array Object.is() | 18,899,040 Ops/sec |
| Conditional variable reverse assignment to array Object.is() | 18,845,834 Ops/sec |
| Array assignment to array | 18,808,360 Ops/sec |
| Loop from end with literal length | 18,465,244 Ops/sec |
| Loop of first | 17,988,788 Ops/sec |
| Array-destructuring element assignment | 17,102,096 Ops/sec |
| Loop from end with constant first length | 17,078,096 Ops/sec |
| Loop from end evaluating second length | 16,971,996 Ops/sec |
| Loop from end evaluating first length | 16,547,016 Ops/sec |
| Loop from end with variable first length | 16,379,137 Ops/sec |
| Loop from start with constant first length | 16,050,165 Ops/sec |
| Loop from end with variable second length | 15,960,315 Ops/sec |
| Loop from start with variable second length | 15,854,480 Ops/sec |
| Loop from end with constant second length | 15,773,020 Ops/sec |
| Loop from start with variable first length | 15,583,005 Ops/sec |
| .forEach() on first closure | 15,407,853 Ops/sec |
| Loop from start with constant second length | 15,191,005 Ops/sec |
| .forEach() on second closure | 14,721,358 Ops/sec |
| Loop from start re-evaluating first length | 14,691,269 Ops/sec |
| Loop from start re-evaluating second length | 13,889,201 Ops/sec |
| .forEach() on second | 7,516,918 Ops/sec |
| .forEach() on first | 6,480,734 Ops/sec |
| Array-destructuring rest assignment | 2,698,267 Ops/sec |
| Loop in first | 1,989,614 Ops/sec |
| Loop in second | 1,932,138 Ops/sec |
| Object-destructuring reverse variable assignment with strings | 1,414,204 Ops/sec |
| Object-destructuring reverse variable assignment with numbers | 1,414,132 Ops/sec |
| Object-destructuring variable assignment with strings | 1,387,436 Ops/sec |
| Object-destructuring variable assignment with numbers | 1,385,889 Ops/sec |
| Variable assignment to variable | 1,300,063 Ops/sec |
| Variable assignment to array | 1,270,750 Ops/sec |
| Variable reverse assignment to array | 1,244,739 Ops/sec |
| Variable assignment to constant | 1,226,941 Ops/sec |
| Variable assignment to literal | 1,200,615 Ops/sec |
| Array-destructuring variable assignment | 1,078,004 Ops/sec |
| Object-destructuring rest assignment | 350,345 Ops/sec |