Script Preparation code:
AخA
 
var memory = new ArrayBuffer(1024 * 1024);
var memoryF32 = new Float32Array(memory);
var memoryU32 = new Uint32Array(memory);
Tests:
  • Array access

    x
     
    for (let i = 0; i < 1024; ++i) {
      memoryF32[i] = Math.random();
    }
    for (let i = 1; i < 1024; ++i) {
      memoryF32[i-1] = memoryF32[i] * 2;
    }
    for (let i = 1; i < 1024; ++i) {
      memoryU32[i + 1024] = memoryF32[i] > 0.5 ? 1 : 0;
    }
  • Function access

     
    const readF32 = (idx) => memoryF32[idx];
    const writeF32 = (idx, value) => memoryF32[idx] = value;
    const writeU32 = (idx, value) => memoryU32[idx+1024] = value;
    for (let i = 0; i < 1024; ++i) {
      writeF32(i, Math.random());
    }
    for (let i = 1; i < 1024; ++i) {
      writeF32(i-1, readF32(i) * 2);
    }
    for (let i = 1; i < 1024; ++i) {
      writeU32(i, memoryF32[i] > 0.5 ? 1 : 0);
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Array access
    Function access

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Chrome 91 on Windows
View result in a separate tab
Test name Executions per second
Array access 2106.1 Ops/sec
Function access 2147.5 Ops/sec