lukeed / clsx

A tiny (239B) utility for constructing `className` strings conditionally.
MIT License
8.28k stars 143 forks source link

Could default exported function perform a tiny bit better? #28

Closed realamirhe closed 10 months ago

realamirhe commented 4 years ago
export default function () {
-   var i=0, tmp, x, str='';
+   var tmp, x, len=arguments.length, str='', i=0;
-   while (i < arguments.length) {
+   while (i < len) {
        if (tmp = arguments[i++]) {
            if (x = toVal(tmp)) {
                str && (str += ' ');
                str += x
            }
        }
    }
    return str;
}

Benchmark on only string concatenation shows an increase of about 1,000,000 operation/sec. Note: I got benchmark results only in node, in a really inaccurate way. but theoretically, it must increase the performance.

lukeed commented 4 years ago

Hey, thanks!

This is already done in #26 – I haven't been able to setup a clean bench environment to test this out yet. Caching a foo.length used to not matter, but it may very well matter once again.

It's on my TODO list to go through these PRs.

hood commented 2 years ago

Any news on this?

lukeed commented 10 months ago

This was addressed & merged in the linked PR. Thanks