Script Preparation code:
x
 
var layr = 0;
var map = {
  tileWidth: 32,
  tileHeight: 32,
  currentLayer: 0,
  layers: [{data: {width: 18, height: 18}}]
}
function snapToFloor(input, gap, start) {
  if (typeof start === "undefined") { start = 0; }
  if (gap == 0) {
    return input;
  }
  input -= start;
  input = gap * Math.floor(input / gap);
  return start + input;
}
function A(x, y, tileWidth, tileHeight, layr) {
  if (typeof layr === "undefined") {
    layr = map.currentLayer;
  }
  x = snapToFloor(x, tileWidth) / tileWidth;
  y = snapToFloor(y, tileHeight) / tileHeight;
  if (x >= 0 && x < map.layers[layr].width && y >= 0 && y < map.layers[layr].height) {
    return map.layers[layr].data[y][x];
  }
}
function B(x, y, tileWidth, tileHeight, layr) {
  x = snapToFloor(x, tileWidth) / tileWidth;
  y = snapToFloor(y, tileHeight) / tileHeight;
  if (x >= 0 && x < map.layers[layr].width && y >= 0 && y < map.layers[layr].height) {
    return map.layers[layr].data[y][x];
  }
}
function C(x, y, tileWidth, tileHeight, layr) {
  x = snapToFloor(x, tileWidth) / tileWidth;
  y = snapToFloor(y, tileHeight) / tileHeight;
  if (x < map.layers[layr].width && y < map.layers[layr].height) {
    return map.layers[layr].data[y][x];
  }
}
Tests:
  • A

     
    for(var x = 0; x < 500; x++){
        for(var y = 0; y < 500; y++){
            A(x, y, map.tileWidth, map.tileHeight, layr);
        }
    }
  • B

     
    for(var x = 0; x < 500; x++){
        for(var y = 0; y < 500; y++){
            B(x, y, map.tileWidth, map.tileHeight, layr);
        }
    }
  • C

     
    for(var x = 0; x < 500; x++){
        for(var y = 0; y < 500; y++){
            C(x, y, map.tileWidth, map.tileHeight, layr);
        }
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    A
    B
    C

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 2025 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36 OPR/51.0.2830.26
Opera 51 on Windows
View result in a separate tab
Test name Executions per second
A 4.8 Ops/sec
B 4.8 Ops/sec
C 4.7 Ops/sec