jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
How to clone object comparison
<script src="https://cdn.jsdelivr.net/npm/lodash-es@4.17.21/lodash.min.js"></script>const person = {
name: 'John Doe',
age: 34,
address: {
country: 'USA',
city: 'Boston',
},
hobbies: ['Reading', 'Cooking'],
active: true,
signDate: new Date(),
superPowers: new Set(['strength', 'fly']),
knwoledge: new Map([['history', 'good'], ['math', 'bad']]),
};
const lodash_CloneDeep = _.cloneDeep;
function spreadClone(value){
if (value == null){
return value;
}
const typeStr = typeof value;
if (typeStr == "function"){
return (...args) => value(...args);
}
if (typeStr == "object"){
value = {...value};
const keys = Object.keys(value);
for (const k of keys){
value[k] = spreadClone(value[k]);
}
}
return value;
}
function assignClone(value){
if (value == null){
return value;
}
const typeStr = typeof value;
if (typeStr == "function"){
return (...args) => value(...args);
}
if (typeStr == "object"){
value = Object.assign({}, {...value});
const keys = Object.keys(value);
for (const k of keys){
value[k] = assignClone(value[k]);
}
}
return value;
}
Ready to run.
| Test | Ops/sec | |
|---|---|---|
| spreadClone | | ready |
| structuredClone | | ready |
| stringify + parse | | ready |
| lodash | | ready |
| Object.assign | | ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.