Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Classnames vs CLSX vs custom implementation 02
Compare CLSX vs Classnames
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1
Browser:
Mobile Safari 18
Operating system:
iOS 18.5
Device Platform:
Mobile
Date tested:
11 months ago
Test name
Executions per second
classnames
6989340.5 Ops/sec
clsx
10740466.0 Ops/sec
custom implemenatation
11603602.0 Ops/sec
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/classnames/2.3.2/index.min.js'></script> <script src='https://unpkg.com/clsx@1.2.1/dist/clsx.min.js'></script>
Script Preparation code:
var str = 'style'; var obj = { 'style-2': true, 'style-3': false, 'style-4': true, } var arr = ['style-5', 'style-6'] function composeCssClass(...values) { let classNameStack = "" for (let i=0; i<values.length; i+=1) { const value = values[i] switch (true) { case !value: { continue } case typeof value === "string": case typeof value === "number": { classNameStack = classNameStack + (classNameStack && ' ') + value continue } case Array.isArray(value): { const valueFromArray = composeCssClass(...value) if (typeof valueFromArray !== 'undefined') { classNameStack = classNameStack + (classNameStack && ' ') + valueFromArray } continue } case typeof value === "object": { for (const key in value) { if (value[key]) { classNameStack = classNameStack + (classNameStack && ' ') + key } } continue } } } return classNameStack || undefined }
Tests:
classnames
let result = window.classNames(str, obj, arr, 'test classname')
clsx
let result = window.clsx(str, obj, arr, 'test classname')
custom implemenatation
let result = composeCssClass(str, obj, arr, 'test classname')