Test name | Executions per second |
---|---|
arr.at(idx) | 641519.1 Ops/sec |
at(arr, idx) | 26017568.0 Ops/sec |
arr[idx] | 26553486.0 Ops/sec |
const arr = new Array(512).fill(0).map(() => Math.round(Math.random() * 512));
const at = (arr, idx) => arr[(idx < 0 ? arr.length + idx : idx)];
for (let i = 0; i < arr.length; i++) arr[i] += 1; // access all elements first to allow browser engine optimization if any.
fn1();
fn2();
fn3();
function fn1() {
arr.at(5);
arr.at(2);
arr.at(50);
arr.at(20);
arr.at(500);
arr.at(200);
arr.at(-1);
}
function fn2() {
at(arr, 5);
at(arr, 2);
at(arr, 50);
at(arr, 20);
at(arr, 500);
at(arr, 200);
at(arr, -1);
}
function fn3() {
arr[5];
arr[2];
arr[50];
arr[20];
arr[500];
arr[200];
arr[arr.length - 1];
}
fn1();fn1();fn1();fn1();fn1();fn1();fn1();fn1();fn1();fn1();fn1();
fn2();fn2();fn2();fn2();fn2();fn2();fn2();fn2();fn2();fn2();fn2();
fn3();fn3();fn3();fn3();fn3();fn3();fn3();fn3();fn3();fn3();fn3();