Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
perf: do not lowercase returned values
We're sacrificing a lot of performance just to lowercase the string values, which is not ideal as it's not always necessary. Here are some numbers demonstrating the difference in performance: With `.toLowerCase()`: ``` string literal x 31,742,089 ops/sec ±6.85% (70 runs sampled) array literal x 12,508,545 ops/sec ±3.86% (67 runs sampled) boolean literal x 33,502,011 ops/sec ±3.58% (66 runs sampled) object literal x 1,178,855 ops/sec ±2.06% (79 runs sampled) object from null x 3,356,249 ops/sec ±2.03% (81 runs sampled) regex literal x 2,738,477 ops/sec ±1.95% (80 runs sampled) number literal x 30,119,855 ops/sec ±2.04% (78 runs sampled) promise x 7,260,140 ops/sec ±1.79% (81 runs sampled) null x 34,793,675 ops/sec ±1.58% (84 runs sampled) undefined x 31,537,228 ops/sec ±1.77% (81 runs sampled) function x 35,571,426 ops/sec ±1.69% (82 runs sampled) buffer x 5,468,033 ops/sec ±2.19% (83 runs sampled) date x 4,402,505 ops/sec ±1.47% (83 runs sampled) error x 932,833 ops/sec ±2.16% (80 runs sampled) map x 7,298,659 ops/sec ±1.64% (81 runs sampled) regex constructor x 3,042,918 ops/sec ±2.28% (80 runs sampled) set x 6,075,985 ops/sec ±1.91% (82 runs sampled) string constructor x 1,077,682 ops/sec ±2.32% (82 runs sampled) weakmap x 5,949,120 ops/sec ±1.99% (83 runs sampled) weakset x 5,574,794 ops/sec ±1.89% (78 runs sampled) arguments x 1,065,249 ops/sec ±1.37% (83 runs sampled) arrow function x 28,776,605 ops/sec ±1.61% (81 runs sampled) generator function x 34,581,601 ops/sec ±2.11% (79 runs sampled) Float64Array x 5,306,129 ops/sec ±1.64% (83 runs sampled) Float32Array x 5,635,134 ops/sec ±1.37% (84 runs sampled) Uint32Array x 5,584,889 ops/sec ±1.72% (83 runs sampled) Uint16Array x 5,024,561 ops/sec ±1.40% (85 runs sampled) Uint8Array x 5,032,024 ops/sec ±1.93% (81 runs sampled) Int32Array x 6,261,825 ops/sec ±2.21% (78 runs sampled) Int16Array x 6,380,182 ops/sec ±1.68% (81 runs sampled) Int8Array x 6,156,981 ops/sec ±2.27% (78 runs sampled) Uint8ClampedArray x 5,911,482 ops/sec ±1.85% (80 runs sampled) DataView x 7,308,534 ops/sec ±1.83% (78 runs sampled) ``` Without `.toLowerCase()`: ``` string literal x 47,522,814 ops/sec ±1.93% (80 runs sampled) array literal x 18,729,054 ops/sec ±1.88% (81 runs sampled) boolean literal x 33,037,749 ops/sec ±2.17% (83 runs sampled) object literal x 1,536,749 ops/sec ±2.99% (80 runs sampled) object from null x 3,148,007 ops/sec ±2.39% (83 runs sampled) regex literal x 3,373,384 ops/sec ±1.82% (82 runs sampled) number literal x 33,096,650 ops/sec ±1.43% (85 runs sampled) promise x 13,416,347 ops/sec ±1.62% (80 runs sampled) null x 32,376,000 ops/sec ±1.70% (82 runs sampled) undefined x 30,734,992 ops/sec ±1.60% (82 runs sampled) function x 35,044,726 ops/sec ±1.87% (81 runs sampled) buffer x 10,831,858 ops/sec ±1.93% (82 runs sampled) date x 4,511,245 ops/sec ±1.99% (81 runs sampled) error x 836,481 ops/sec ±2.31% (79 runs sampled) map x 14,289,403 ops/sec ±1.72% (83 runs sampled) regex constructor x 3,764,635 ops/sec ±2.69% (78 runs sampled) set x 12,494,254 ops/sec ±1.95% (82 runs sampled) string constructor x 1,282,794 ops/sec ±1.92% (80 runs sampled) weakmap x 15,418,935 ops/sec ±1.84% (79 runs sampled) weakset x 14,768,545 ops/sec ±1.60% (82 runs sampled) arguments x 993,064 ops/sec ±1.88% (81 runs sampled) arrow function x 30,511,620 ops/sec ±2.07% (79 runs sampled) generator function x 35,487,241 ops/sec ±1.53% (81 runs sampled) Float64Array x 9,666,668 ops/sec ±1.75% (79 runs sampled) Float32Array x 9,286,265 ops/sec ±1.66% (81 runs sampled) Uint32Array x 9,352,490 ops/sec ±1.37% (82 runs sampled) Uint16Array x 8,404,961 ops/sec ±2.03% (80 runs sampled) Uint8Array x 8,635,152 ops/sec ±1.81% (80 runs sampled) Int32Array x 10,569,543 ops/sec ±1.67% (82 runs sampled) Int16Array x 9,444,358 ops/sec ±1.53% (80 runs sampled) Int8Array x 7,235,174 ops/sec ±2.43% (76 runs sampled) Uint8ClampedArray x 8,055,645 ops/sec ±1.67% (82 runs sampled) DataView x 15,014,475 ops/sec ±2.08% (79 runs sampled) ``` BREAKING CHANGE: All strings will no longer be lowercase. If you want them in lowercase, simply add `.toLowerCase()` to the return value.
- Loading branch information