Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
min check
(version: 0)
Comparing performance of:
Create light vs Directly find
Created:
one year ago
by:
Guest
Jump to the latest result
Script Preparation code:
// 假的 entityById 資料 const entityById = {}; for (let i = 1; i <= 200; i++) { const price = (i * 10).toString(); // 產生 10, 20, 30, ..., 1000 的 price key const amount = Math.floor(Math.random() * 100) + 1; // 隨機產生 1 到 100 的 amount entityById[price] = amount; } // 假的 data 資料 const data = []; for (let i = 0; i < 20; i++) { const price = ((Math.floor(Math.random() * 100) + 1) * 10).toString(); // 隨機選擇 10, 20, 30, ..., 1000 的 price key const amount = Math.floor(Math.random() * 101); // 隨機產生 0 到 100 的 amount data.push([price, amount]); }
Tests:
Create light
function getEntityById(state, data) { const entityById = { ...state.entityById } data.forEach(([price, _amount]) => { const amount = Number(_amount) if (amount === 0) { delete entityById[price] } else { entityById[price] = { amount } } }) return entityById } askEntityById = getEntityById(entityById, data) const minAsks = Math.min(...Object.keys(askEntityById).map(Number))
Directly find
function getMinAsks(state, data) { const sortedAsks = Object.keys(state.entityById).sort((a, b) => (Number(a) - Number(b) ? -1 : 1)) const idFromData: Record<string, boolean> = {} data.forEach(([price, _amount]) => { // array deconstructor is slow const amount = Number(_amount) if (amount === 0) { idFromData[price] = false } else { idFromData[price] = true } }) const sortedIdFromData = Object.keys(idFromData).sort((a, b) => (Number(a) - Number(b) ? -1 : 1)) let minAsk | undefined let minStateAsk = sortedAsks.shift() let minDataAsk = sortedIdFromData.shift() while (!minAsk) { if (Number(minStateAsk) < Number(minDataAsk)) { if (idFromData[String(minStateAsk)]) { minAsk = Number(minStateAsk) } else { minStateAsk = sortedAsks.shift() } } else if (Number(minStateAsk) > Number(minDataAsk)) { if (idFromData[String(minDataAsk)]) { minAsk = Number(minDataAsk) } else { minDataAsk = sortedIdFromData.shift() } } } return minAsk } const minAsks = getMinAsks(entityById, data)
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
Create light
Directly find
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Comments
Confirm delete:
Do you really want to delete benchmark?