Some benchmarks of community-made JavaScript/TypeScript libraries for converting units.
Generated automatically at Sat, 22 Feb 2025 09:19:18 GMT with Node.js v22.13.1 (V8 v12.4.254.21-node.22) on fv-az1360-23 (Linux-x64 AMD EPYC 7763 64-Core Processor)
Each test was called 10,000 times to allow the runtime to warmup. Afterward 100,000 trials were performed for each library. Information about the execution times are shown below. Lower execution times and higher executions per second are better.
A baseline of raw math is included when relevant.
If you want a different library to be added to the benchmark, make an issue or create a pull request if you're comfortable.
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
math (baseline) | 50 ns (100%) |
50 ns (100%) |
20,000,000 /sec |
convert-units (popular) | 110 ns (220%) |
110 ns (220%) |
9,090,909 /sec |
simple-units (fast) | 110 ns (220%) |
120 ns (240%) |
9,090,909 /sec |
convert (fast) | 130 ns (260%) |
140 ns (280%) |
7,692,308 /sec |
uom (fast) | 240 ns (480%) |
250 ns (500%) |
4,166,667 /sec |
moment (popular) | 401 ns (802%) |
401 ns (802%) |
2,493,766 /sec |
safe-units (fast) | 451 ns (902%) |
461 ns (922%) |
2,217,295 /sec |
dayjs (popular) | 551 ns (1,102%) |
571 ns (1,142%) |
1,814,882 /sec |
luxon (popular) | 1,062 ns (2,124%) |
1,092 ns (2,184%) |
941,620 /sec |
js-quantities (popular) | 1,983 ns (3,966%) |
2,003 ns (4,006%) |
504,286 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
convert (fast) | 601 ns (100%) |
671 ns (112%) |
1,663,894 /sec |
convert-units (popular) | 1,302 ns (217%) |
1,393 ns (232%) |
768,049 /sec |
byte-size (popular) | 26,351 ns (4,385%) |
27,775 ns (4,621%) |
37,949 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
math (baseline) | 60 ns (100%) |
60 ns (100%) |
16,666,667 /sec |
convert-units (popular) | 100 ns (167%) |
101 ns (168%) |
10,000,000 /sec |
simple-units (fast) | 111 ns (185%) |
120 ns (200%) |
9,009,009 /sec |
convert (fast) | 120 ns (200%) |
130 ns (217%) |
8,333,333 /sec |
uom (fast) | 240 ns (400%) |
241 ns (402%) |
4,166,667 /sec |
safe-units (fast) | 471 ns (785%) |
481 ns (802%) |
2,123,142 /sec |
js-quantities (popular) | 2,103 ns (3,505%) |
2,125 ns (3,542%) |
475,511 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
math (baseline) | 50 ns (100%) |
50 ns (100%) |
20,000,000 /sec |
convert (fast) | 120 ns (240%) |
140 ns (280%) |
8,333,333 /sec |
convert-units (popular) | 120 ns (240%) |
130 ns (260%) |
8,333,333 /sec |
simple-units (fast) | 130 ns (260%) |
130 ns (260%) |
7,692,308 /sec |
uom (fast) | 500 ns (1,000%) |
521 ns (1,042%) |
2,000,000 /sec |
safe-units (fast) | 1,172 ns (2,344%) |
1,182 ns (2,364%) |
853,242 /sec |
js-quantities (popular) | 3,025 ns (6,050%) |
3,055 ns (6,110%) |
330,579 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
ms (popular) | 200 ns (100%) |
210 ns (105%) |
5,000,000 /sec |
@lukeed/ms (fast) | 221 ns (111%) |
230 ns (115%) |
4,524,887 /sec |
convert (fast) | 271 ns (136%) |
271 ns (136%) |
3,690,037 /sec |
Library | Median execution time | 75th percentile execution time | Executions per second |
---|---|---|---|
math (baseline) | 50 ns (100%) |
51 ns (102%) |
20,000,000 /sec |
convert (fast) | 100 ns (200%) |
101 ns (202%) |
10,000,000 /sec |