const ARRAY_SIZE = 1_000_000;
const aos = [];
for (let i = 0; i < ARRAY_SIZE; i++) {
aos.push({ x: i, y: i * 2, z: i * 3 });
}
const soa = {
x: new Float64Array(ARRAY_SIZE),
y: new Float64Array(ARRAY_SIZE),
z: new Float64Array(ARRAY_SIZE)
};
for (let i = 0; i < ARRAY_SIZE; i++) {
soa.x[i] = i;
soa.y[i] = i * 2;
soa.z[i] = i * 3;
}
const interleaved = new Float64Array(ARRAY_SIZE * 3);
for (let i = 0; i < ARRAY_SIZE; i++) {
const base = i * 3;
interleaved[base] = i;
interleaved[base + 1] = i * 2;
interleaved[base + 2] = i * 3;
}
let sumAoS = 0;
for (let i = 0; i < ARRAY_SIZE; i++) {
sumAoS += aos[i].x + aos[i].y + aos[i].z;
}
let sumSoA = 0;
for (let i = 0; i < ARRAY_SIZE; i++) {
sumSoA += soa.x[i] + soa.y[i] + soa.z[i];
}
let sumInterleaved = 0;
for (let i = 0; i < ARRAY_SIZE; i++) {
const base = i * 3;
sumInterleaved +=
interleaved[base] +
interleaved[base + 1] +
interleaved[base + 2];
}