Test1

Benchmark created on


Setup

var ENTRIES = 5000;
var MAX_TIMER_LENGTH = 2000;
var intervalArray = [];
var timeArray = [];
var x = new Map();
var clearedArray = [];
var average = 0;

for (let val = 0; val < ENTRIES; val++) {
	const interval = Math.floor(Math.random() * MAX_TIMER_LENGTH);
	timeArray.push(interval);
	clearedArray.push(false);
	x.set(`key${val}`, {val: interval});
	average += interval;
}
console.log('average: ', average/ENTRIES);

Test runner

Ready to run.

Testing in
TestOps/sec
Multiple
for (let val = 0; val < ENTRIES; val ++) {
	intervalArray.push(setInterval(() => {
		clearedArray[val] = true;
		clearInterval(intervalArray[val])
	}, timeArray[val]));
}

var intervalCheck = setInterval(() => {
	var isCleared = true;
	for (const bool of clearedArray) {
		if (!bool) {
			isCleared = false;
			break;
		}
	}
    if (isCleared) {
    	console.log('cleared');
	    deferred.resolve();
	    clearInterval(intervalCheck);
    }
}, 1000)
ready
Single
var REFRESH = 1000;
var interval = setInterval(() => {
	const keys = x.keys();
	const cleanedKeys = [];
	for (let val = 0; val < x.size; val++) {
		let observedKey = keys.next().value;
		let value = x.get(observedKey).val;
		if (value - REFRESH < 0) {
			cleanedKeys.push(observedKey);
		} else {
			x.set(observedKey, {val: value - REFRESH});
		}
	}
	for (const key of cleanedKeys) {
		x.delete(key);
	}
	if (!x.size) {
		console.log('cleared');
	    deferred.resolve();
	    clearInterval(interval)
    }
}, REFRESH)
ready

Revisions

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