calculate amounts or strings for rendering price

Benchmark created on


Setup

const dataAsUnitsNanos = { units: BigInt(92), nanos: BigInt(99 * 1e6)}
const dataAsUnitsNanosNums = { units: 92, nanos: 99 }
const dataAsString = '92.99'
const dataAsNumber = 92.99
const intlOptions = { style: "currency", currency: "USD" };
const numberFormat = new Intl.NumberFormat("en-US", intlOptions);

Test runner

Ready to run.

Testing in
TestOps/sec
Represent directly
const dataAsNumberFormatted = numberFormat.format(dataAsNumber);
console.log(dataAsNumberFormatted, 'direct')
ready
Represent with transform from string and parsefloat
const dataAsStringFormatted = numberFormat.format(parseFloat(dataAsString));
console.log(dataAsStringFormatted, 'string')
ready
Represent without parsefloat just strings
const dataAsStringFormattedWithoutParsefloat = numberFormat.format(dataAsString);
console.log(dataAsStringFormattedWithoutParsefloat, 'string no parsefloat')
ready
Represents with transforms of units nanos as nums
const dataAsUnitNanosNums = numberFormat.format(`${dataAsUnitsNanosNums.units}.${dataAsUnitsNanosNums.nanos}`);
console.log(dataAsUnitNanosNums)
ready
Represent with transform from units nanos
const dataAsUnitsNanosFormatted = numberFormat.format(Number(dataAsUnitsNanos.units) + (Number(dataAsUnitsNanos.nanos) / 1e6));
console.log(dataAsUnitsNanosFormatted, 'units/nanos')
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.