jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
const WeightUnitMultiplier = {
mg: 1,
g: 1_000,
kg: 1_000_000,
t: 1_000_000_000,
oz: 28_349.5231,
lb: 453_592.37,
};
const weights = [
{ milligrams: 1000, displayUnit: 'mg' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'mg' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'mg' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'mg' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'mg' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'mg' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'g' },
{ milligrams: 1000, displayUnit: 'kg' },
{ milligrams: 1000, displayUnit: 'kg' },
];
function sumWeightsInMilligrams1(weights) {
const sortedUnits = Object.values(WeightUnit).sort((a, b) => WeightUnitMultiplier[a] - WeightUnitMultiplier[b]);
let largestUnitIndex = 0;
let totalWeightInMg = 0;
weights.forEach((weight) => {
totalWeightInMg += weight.milligrams;
largestUnitIndex = Math.max(largestUnitIndex, sortedUnits.indexOf(weight.displayUnit));
});
return {
weightInMg: totalWeightInMg,
largestDisplayUnit: sortedUnits[largestUnitIndex],
};
}
function sumWeightsInMilligrams2(weights) {
return {
weightInMg: weights.map((it) => it.milligrams).reduce((a, b) => a + b),
largestDisplayUnit: weights
.map((it) => ({
unit: it.displayUnit,
multiplier: WeightUnitMultiplier[it.displayUnit],
}))
.reduce((a, b) => (a.multiplier > b.multiplier ? a : b)).unit,
};
}
Ready to run.
| Test | Ops/sec | |
|---|---|---|
| Sort | | ready |
| Reduce | | ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.