Spread vs structuredClone (v4)

Revision 4 of this benchmark created on


Preparation HTML

<script src="https://cdn.jsdelivr.net/npm/lodash-es@4.17.21/lodash.min.js"></script>

Setup

const myData = {
    width: 1170,
    height: 2532
};

Test runner

Ready to run.

Testing in
TestOps/sec
structuredClone
function f(data) {
	return structuredClone(data);
}

const result = f(myData);

ready
Spread
function f(data) {
	return { ...data };
}

const result = f(myData);

ready
Object.assign
function f(data) {
	return Object.assign({}, data);
}

const result = f(myData);
ready
JSON
function f(data) {
	return JSON.parse(JSON.stringify(data));
}

const result = f(myData);
ready
Manual implementation
function f(data) {
	return {
		width: data.width,
		height: data.height
	}
}

const result = f(myData);
ready
Object.entries
function f(data) {
	const result = {};
	for ([key, value] of Object.entries(data)) {
		result[key] = value;
	}
}

const result = f(myData);
ready
_.clone
function f(data) {
	return _.clone(data);
}

const result = f(myData);
ready
_. cloneDeep
function f(data) {
	return _.cloneDeep(data);
}

const result = f(myData);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.