JSFiddle - React, Tailwind, and code Playground

Array Insert Order By Property

by skibulk

JavaScript

var data = [], prev = 0, next;
for (var i = 0; i < 1000000; i++) {
	next = prev + Math.round(Math.random() * 1000) - 100;
	data.push({
		date: next
	});
	prev = next;
}
console.log(data.slice());

function trial1() {
	function arrayInsertOrderByProperty(arr, obj, prop) {
		if (arr.length > 0) {
			for (var i = arr.length - 1; i >= 0; i--) {
				if (obj[prop] >= arr[i][prop]) {
					i++
					break;
				}
			}
		}
		arr.splice(i, 0, obj);
	}

	var temp = [];

	for (var i = 0; i < data.length; i++) {
		arrayInsertOrderByProperty(temp, data[i], 'date');
	}
	//console.log(temp);
}

function trial2() {
	function sortObjectsByKey(array, key) {
		return array.sort(function(a, b) {
			if(a[key] < b[key]) return -1;
			if(a[key] > b[key]) return 1;
			return 0;
		});
	}
	
	var temp = [];

	for (var i = 0; i < data.length; i++) {
		temp.push(data[i]);
	}
	
	sortObjectsByKey(temp, 'date');
	//console.log(temp);
}

function benchmark(callback, iterations) {
	var before = new Date().getTime() / 1000;
	for (var i = 0; i < iterations; i++) {
		callback();
	}
	var after = new Date().getTime() / 1000;
	var time = after - before;
	console.log("Benchmark: " + time);
	return time;
}

console.log("Ratio: " + (benchmark(trial1, 10) / benchmark(trial2, 10)));