Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Conso duplicates solution
(version: 1)
Comparing performance of:
test on loop for each vs test two loop
Created:
one year ago
by:
Guest
Jump to the latest result
HTML Preparation code:
<!--your preparation HTML code goes here-->
Script Preparation code:
const consommations = [{"annee":2023,"mois":2,"fiabilite_conso":"A"},{"annee":2023,"mois":3,"fiabilite_conso":"E","consommation":{"litre":19624,"m3":19.624,"prix_m3_estime":64.37},"index":{"litre":553554,"m3":553.554}},{"annee":2023,"mois":4,"fiabilite_conso":"M","consommation":{"litre":20380,"m3":20.38,"prix_m3_estime":66.85},"index":{"litre":573178,"m3":573.178}},{"annee":2023,"mois":5,"fiabilite_conso":"M","consommation":{"litre":19293,"m3":19.293,"prix_m3_estime":63.28},"index":{"litre":593558,"m3":593.558}},{"annee":2023,"mois":6,"fiabilite_conso":"M","consommation":{"litre":20048,"m3":20.048,"prix_m3_estime":65.76},"index":{"litre":612851,"m3":612.851}},{"annee":2023,"mois":7,"fiabilite_conso":"E","consommation":{"litre":22635,"m3":22.635,"prix_m3_estime":74.24},"index":{"litre":632899,"m3":632.899}},{"annee":2023,"mois":8,"fiabilite_conso":"M","consommation":{"litre":23212,"m3":23.212,"prix_m3_estime":76.14},"index":{"litre":655534,"m3":655.534}},{"annee":2023,"mois":9,"fiabilite_conso":"M","consommation":{"litre":18667,"m3":18.667,"prix_m3_estime":61.23},"index":{"litre":678746,"m3":678.746}},{"annee":2023,"mois":10,"fiabilite_conso":"E","consommation":{"litre":3319,"m3":3.319,"prix_m3_estime":10.89},"index":{"litre":697413,"m3":697.413}},{"annee":2023,"mois":11,"fiabilite_conso":"M","consommation":{"litre":481,"m3":0.481,"prix_m3_estime":1.58},"index":{"litre":700732,"m3":700.732}},{"annee":2023,"mois":12,"fiabilite_conso":"M","consommation":{"litre":1418,"m3":1.418,"prix_m3_estime":4.65},"index":{"litre":701213,"m3":701.213}},{"annee":2024,"mois":1,"fiabilite_conso":"M","consommation":{"litre":2283,"m3":2.283,"prix_m3_estime":7.49},"index":{"litre":702631,"m3":702.631}},{"annee":2024,"mois":2,"fiabilite_conso":"M","consommation":{"litre":4054,"m3":4.054,"prix_m3_estime":13.3},"index":{"litre":704914,"m3":704.914}},{"annee":2024,"mois":3,"fiabilite_conso":"E","consommation":{"litre":7894,"m3":7.894,"prix_m3_estime":25.89},"index":{"litre":708968,"m3":708.968}},{"annee":2024,"mois":4,"fiabilite_conso":"M","consommation":{"litre":9116,"m3":9.116,"prix_m3_estime":29.9},"index":{"litre":716862,"m3":716.862}},{"annee":2024,"mois":5,"fiabilite_conso":"E","consommation":{"litre":9993,"m3":9.993,"prix_m3_estime":32.78},"index":{"litre":725978,"m3":725.978}},{"annee":2024,"mois":6,"fiabilite_conso":"E","consommation":{"litre":5710,"m3":5.71,"prix_m3_estime":18.73},"index":{"litre":735971,"m3":735.971}},{"annee":2024,"mois":6,"fiabilite_conso":"E","consommation":{"litre":972,"m3":0.972,"prix_m3_estime":3.19},"index":{"litre":619,"m3":0.619}},{"annee":2024,"mois":7,"fiabilite_conso":"E","consommation":{"litre":7604,"m3":7.604,"prix_m3_estime":24.94},"index":{"litre":1591,"m3":1.591}},{"annee":2024,"mois":8,"fiabilite_conso":"M","consommation":{"litre":8279,"m3":8.279,"prix_m3_estime":27.16},"index":{"litre":9195,"m3":9.195}},{"annee":2024,"mois":9,"fiabilite_conso":"M","consommation":{"litre":7006,"m3":7.006,"prix_m3_estime":22.98},"index":{"litre":17474,"m3":17.474}},{"annee":2024,"mois":10,"fiabilite_conso":"E","consommation":{"litre":6036,"m3":6.036,"prix_m3_estime":19.8},"index":{"litre":24480,"m3":24.48}},{"annee":2024,"mois":11,"fiabilite_conso":"A"},{"annee":2024,"mois":12,"fiabilite_conso":"A"},{"annee":2025,"mois":1,"fiabilite_conso":"A"},{"annee":2025,"mois":2,"fiabilite_conso":"A"}]
Tests:
test on loop for each
const getConsommationObjectDate = ( annee, mois, jour, ) => ({ annee, mois, jour, }); const consommationIndisponibleObjectData = {state: 'INDISPONIBLE'} const fusionState = ( actual, added, ) => added === 'A' ? actual ?? 'INDISPONIBLE' : actual === 'ESTIMEE' || added === 'E' ? 'ESTIMEE' : 'MESUREE'; const fusionConsommationObjectData = ( actual, added, ) => ({ volume: (actual?.volume ?? 0) + (added?.litre ?? 0), prix: actual?.prix || added?.prix_m3_estime ? (actual?.prix ?? 0) + (added?.prix_m3_estime ?? 0) : undefined, }); const fusionData = ( actual, added, ) => ({ state: fusionState(actual.state, added.fiabilite_conso), consommation: actual.consommation || added.consommation ? fusionConsommationObjectData(actual.consommation, added.consommation) : undefined, ecoulement: actual.ecoulement || added.ecoulement ? fusionConsommationObjectData(actual.ecoulement, added.ecoulement) : undefined, unit: 'L', }); const result= []; let currentYear; let currentMonth; let currentData = {state: 'INDISPONIBLE'}; consommations.forEach((conso, index) => { if (index === 0) { currentYear = conso.annee; currentMonth = conso.mois; currentData = fusionData(consommationIndisponibleObjectData, conso); } else if (conso.annee === currentYear && conso.mois === currentMonth) { currentData = fusionData(currentData, conso); } else { result.push({ date: getConsommationObjectDate(currentYear, currentMonth - 1), data: currentData, }); currentYear = conso.annee; currentMonth = conso.mois; currentData = fusionData(consommationIndisponibleObjectData, conso); } if (index === consommations.length - 1) { result.push({ date: getConsommationObjectDate(currentYear, currentMonth - 1), data: currentData, }); } });
test two loop
const getConsommationObjectDate = ( annee, mois, jour, ) => ({ annee, mois, jour, }); const getConsommationObjectData = ( consommation, ) => consommation ? { volume: consommation.litre, prix: consommation?.prix_m3_estime, } : undefined; const getConsommationMensuelleObjectData = ( consommation, ) => ({ state: consommation.fiabilite_conso === 'M' ? 'MESUREE' : 'ESTIMEE', consommation: getConsommationObjectData(consommation.consommation), ecoulement: getConsommationObjectData(consommation.ecoulement), unit: 'L', }); const consommationIndisponibleObjectData = {state: 'INDISPONIBLE'} const fusionState = ( actual, added, ) => added === 'A' ? actual ?? 'INDISPONIBLE' : actual === 'ESTIMEE' || added === 'E' ? 'ESTIMEE' : 'MESUREE'; const fusionConsommationObjectData = ( actual, added, ) => ({ volume: (actual?.volume ?? 0) + (added?.litre ?? 0), prix: actual?.prix || added?.prix_m3_estime ? (actual?.prix ?? 0) + (added?.prix_m3_estime ?? 0) : undefined, }); const fusionData = ( actual, added, ) => ({ state: fusionState(actual.state, added.fiabilite_conso), consommation: actual.consommation || added.consommation ? fusionConsommationObjectData(actual.consommation, added.consommation) : undefined, ecoulement: actual.ecoulement || added.ecoulement ? fusionConsommationObjectData(actual.ecoulement, added.ecoulement) : undefined, unit: 'L', }); const result= []; let currentYear; let currentMonth; let currentData = {state: 'INDISPONIBLE'}; consommations.map(conso => ({ date: getConsommationObjectDate(conso.annee, conso.mois - 1), data: conso.fiabilite_conso === 'A' ? {state: 'INDISPONIBLE'} : getConsommationMensuelleObjectData(conso), }))
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
test on loop for each
test two loop
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
one year ago
)
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15
Browser/OS:
Safari 18 on Mac OS X 10.15.7
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
test on loop for each
1237974.1 Ops/sec
test two loop
1822530.8 Ops/sec
Related benchmarks:
Filter or Reduce vs Loop
for vs $.each
array order lodash vs vanilla
Reduce vs map with Object.assign 1
FILTERvastaanMAP
Test HOY
localeCompare for countries
Checkf
Conso duplicates solution 2
Comments
Confirm delete:
Do you really want to delete benchmark?