Script Preparation code:
x
 
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];
}
Tests:
  • arr.at(idx)

     
    fn1();fn1();fn1();fn1();fn1();fn1();fn1();fn1();fn1();fn1();fn1();
  • at(arr, idx)

     
    fn2();fn2();fn2();fn2();fn2();fn2();fn2();fn2();fn2();fn2();fn2();
  • arr[idx]

     
    fn3();fn3();fn3();fn3();fn3();fn3();fn3();fn3();fn3();fn3();fn3();
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    arr.at(idx)
    at(arr, idx)
    arr[idx]

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one month ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Chrome 133 on Mac OS X 10.15.7
View result in a separate tab
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