Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
transrorm template
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Browser:
Chrome 133
Operating system:
Windows
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
transform1
72.9 Ops/sec
transform2
97.4 Ops/sec
HTML Preparation code:
<!--your preparation HTML code goes here-->
Tests:
transform1
var transform1 = (rowTemplate) => { if (!rowTemplate?.length) { return [[]]; } const rows = rowTemplate.length; const cols = rowTemplate[0].length; const tiles = new Map(); for (let row = 0; row < rows; row++) { for (let col = 0; col < cols; col++) { const id = rowTemplate[row][col]; if (!tiles.has(id)) { tiles.set(id, { positions: [] }); } tiles.get(id)?.positions.push({ row, col }); } } const tilesByColumn = Array.from(tiles.keys()).sort((idA, idB) => { const posA = tiles.get(idA)?.positions[0]; const posB = tiles.get(idB)?.positions[0]; return posA.col === posB.col ? posA.row - posB.row : posA.col - posB.col; }); const tilesByRow = Array.from(tiles.keys()).sort((idA, idB) => { const posA = tiles.get(idA)?.positions[0]; const posB = tiles.get(idB)?.positions[0]; return posA.row === posB.row ? posA.col - posB.col : posA.row - posB.row; }); const tileMap = {}; tilesByRow.forEach((rowId, index) => { tileMap[rowId] = tilesByColumn[index]; }); const result = Array(rows).fill(null) .map(() => Array(cols).fill(null)); for (let row = 0; row < rows; row++) { for (let col = 0; col < cols; col++) { const originalId = rowTemplate[row][col]; result[row][col] = tileMap[originalId]; } } return result; }; var t1 = [ ["1", "1", "2", "3", "4", "4"], ["1", "1", "5", "6", "4", "4"] ]; for (var i=0; i < 10000; i++) { transform1(t1); }
transform2
var transform2 = (rowTemplate) => { if (!rowTemplate?.length) return [[]]; const rows = rowTemplate.length; const cols = rowTemplate[0].length; const firstPositions = {}; for (let row = 0; row < rows; row++) { for (let col = 0; col < cols; col++) { const id = rowTemplate[row][col]; if (firstPositions[id] === undefined) { firstPositions[id] = {row, col}; } } } const uniqueIds = Object.keys(firstPositions); const rowIds = [...uniqueIds].sort((a, b) => { const posA = firstPositions[a]; const posB = firstPositions[b]; return posA.row === posB.row ? posA.col - posB.col : posA.row - posB.row; }); const colIds = [...uniqueIds].sort((a, b) => { const posA = firstPositions[a]; const posB = firstPositions[b]; return posA.col === posB.col ? posA.row - posB.row : posA.col - posB.col; }); const tileMap = {}; for (let i = 0; i < rowIds.length; i++) { tileMap[rowIds[i]] = colIds[i]; } const result = Array(rows); for (let row = 0; row < rows; row++) { result[row] = new Array(cols); for (let col = 0; col < cols; col++) { result[row][col] = tileMap[rowTemplate[row][col]]; } } return result; }; var t1 = [ ["1", "1", "2", "3", "4", "4"], ["1", "1", "5", "6", "4", "4"] ]; for (var i=0; i < 10000; i++) { transform2(t1); }