Array comparison: stringify vs iteration (v3)

Revision 3 of this benchmark created on


Setup

const arr1 = [
  'aae26586-1a69-49f4-a2d1-175f29a140ef',
  '9d715271-b7da-4284-8145-9278d280f833',
  '12952b9a-9214-4b28-8abd-3f801a0c4fae',
  '26b25b38-2218-4cc5-bceb-2c5c5c5d0824'
];

const arr2 = [
  'aae26586-1a69-49f4-a2d1-175f29a140ef',
  '9d715271-b7da-4284-8145-9278d280f833',
  '12952b9a-9214-4b28-8abd-3f801a0c4fae',
  'b77c39e7-d05b-452c-aacc-f8ff0af0095c'
];

Test runner

Ready to run.

Testing in
TestOps/sec
via stringify
const areArraysEqual = (a1, a2) => a1.length === a2.length && JSON.stringify(a1.toSorted()) === JSON.stringify(a2.toSorted());

const hasChanged = !areArraysEqual(arr1, arr2);
ready
via every() comparison
const areArraysEqual = (a1, a2) => {
	const as1 = a1.toSorted();
	const as2 = a2.toSorted();
	
	return as1.length === as2.length && as1.every((v, i) => as2[i] === v);
}

const hasChanged = !areArraysEqual(arr1, arr2);


ready
via for comparison
const areArraysEqual = (a, b) => {
	if (a === b) return true;
	if (a.length !== b.length) return false;
	for (let i = 0; i < a.length; i++) {
		if (a[i] !== b[i]) return false;
	}
	return true;
}

const hasChanged = !areArraysEqual(arr1, arr2);
ready
via for comparison (len init)
const areArraysEqual = (a, b) => {
	if (a === b) return true;
	if (a.length !== b.length) return false;
	for (let i = 0, len = a.length; i < len; i++) {
		if (a[i] !== b[i]) return false;
	}
	return true;
}

const hasChanged = !areArraysEqual(arr1, arr2);
ready

Revisions

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