Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
transrorm template
(version: 1)
Comparing performance of:
transform1 vs transform2
Created:
one year ago
by:
Guest
Jump to the latest result
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); }
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
transform1
transform2
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
one year ago
)
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/OS:
Chrome 133 on Windows
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
transform1
72.9 Ops/sec
transform2
97.4 Ops/sec
Related benchmarks:
Array creation
Cloning arrays
Splice vs [...]
Set vs checked array add
Some benchmark >!>
slice vs pop to reduce last element
Splitting a row id into a Map
transrorm template 2
transrorm template 3
Comments
Confirm delete:
Do you really want to delete benchmark?