const runs = 10; const N= 393216; function measureOneLine() { const LINE_SIZE = 8; // 64/sizeof(double) Note that js treats all numbers as double let result = []; // Fill with -1 to ensure allocation const M = new Array(runs * LINE_SIZE).fill(-1); for (let i = 0; i < runs; i++) { const start = performance.now(); let val = M[i * LINE_SIZE]; const end = performance.now(); result.push((end - start).toFixed(2)); } return result; } function measureNLines() { const LINE_SIZE = 8; // 64/sizeof(double) Note that js treats all numbers as double let result = []; // Fill with -1 to ensure allocation const M = new Array(runs * N * LINE_SIZE).fill(-1); for (let i = 0; i < runs; i++) { const start = performance.now(); for (let j = 0; j < N; j++) { let val = M[i * N * LINE_SIZE + j * LINE_SIZE]; } const end = performance.now(); result.push((end - start).toFixed(2)); } return result; } document.getElementById( "exercise1-values" ).innerText = `1 Cache Line: [${measureOneLine().join(", ")}]`; document.getElementById( "exercise2-values" ).innerText = `N Cache Lines: [${measureNLines().join(", ")}]`;