After writing my article on flattening arrays in Unity C#, I was wondering how much performance was gained by using flattened 1D array instead of 2D arrays in javascript.

The answer is: 1D array are about 20% faster than 2D array.

For good measure I also tried other indexing methods but a simple double loop seems to be performing the best among all other methods.

Benchmarks are available on jsbench: https://jsben.ch/W3X2h

Here’s the best performing code on a 1D bool array. Nothing fancy done here.

const width = 1000;
const height = 1000;

const arr = Array.from({length: width * height}, () => Math.random() > 0.5);


let dsmth;
for (let i = 0; i < width; i++) {
  	for (let j = 0; j < height; j++) {
  	dsmth = arr[i + j * width];
	}
}