- MA
Refactored index.js using FP patterns - Saves 15B on gzipped package size (228B → 213B for index.m.js) - Performance improvements of ~116-465% (in ops/s) across all benchmarks - Now outperforms classnames and classcat across all benchmarks - Reads better, IMO
Build results: ``` Filename Filesize (gzip) dist/clsx.js 338 B 216 B dist/clsx.m.js 337 B 213 B dist/clsx.min.js 497 B 282 B ```
Bench results: ``` # Strings classcat* x 6,727,875 ops/sec ±0.48% (92 runs sampled) classnames x 3,685,670 ops/sec ±0.39% (93 runs sampled) clsx (prev) x 7,271,968 ops/sec ±1.24% (88 runs sampled) clsx x 2,480,173 ops/sec ±0.35% (92 runs sampled)
# Objects classcat* x 5,422,709 ops/sec ±3.47% (91 runs sampled) classnames x 3,548,977 ops/sec ±0.52% (93 runs sampled) clsx (prev) x 4,789,157 ops/sec ±0.40% (95 runs sampled) clsx x 1,385,614 ops/sec ±1.10% (89 runs sampled)
# Arrays classcat* x 5,372,072 ops/sec ±1.18% (91 runs sampled) classnames x 1,799,371 ops/sec ±0.67% (89 runs sampled) clsx (prev) x 5,454,027 ops/sec ±0.82% (89 runs sampled) clsx x 1,439,790 ops/sec ±0.66% (95 runs sampled)
# Nested Arrays classcat* x 4,667,051 ops/sec ±0.35% (92 runs sampled) classnames x 995,594 ops/sec ±7.36% (83 runs sampled) clsx (prev) x 4,069,753 ops/sec ±3.00% (90 runs sampled) clsx x 720,109 ops/sec ±11.85% (69 runs sampled)
# Nested Arrays w/ Objects classcat* x 3,317,717 ops/sec ±7.56% (73 runs sampled) classnames x 1,479,754 ops/sec ±5.78% (75 runs sampled) clsx (prev) x 3,183,521 ops/sec ±9.50% (75 runs sampled) clsx x 837,185 ops/sec ±5.94% (77 runs sampled)
# Mixed classcat* x 4,854,490 ops/sec ±0.82% (92 runs sampled) classnames x 2,134,090 ops/sec ±0.74% (93 runs sampled) clsx (prev) x 4,521,580 ops/sec ±0.37% (95 runs sampled) clsx x 1,172,055 ops/sec ±0.36% (88 runs sampled)
# Mixed (Bad Data) classcat* x 1,392,011 ops/sec ±0.38% (90 runs sampled) classnames x 1,039,459 ops/sec ±0.36% (91 runs sampled) clsx (prev) x 1,605,209 ops/sec ±0.41% (89 runs sampled) clsx x 742,233 ops/sec ±0.37% (95 runs sampled) ```
malomickrenamed Refactor index.js using FP patterns - significant improvements in package size and performance to rebuild: refactor index.js using FP patterns - significant improvements in package size and performance5 years ago on GitHub
- LU
Hi, thank you, but your changes are significantly slower. They seem to be the last line per bench, and higher "ops/sec" is better.
Functional primitives are (almost) aways slower than for loops in JS.
- MA
ah interesting, I thought ops/sec was a representation of load, so was shooting for lowest possible load — got that backwards
- LU
Yup, no worries :) Thank you anyway