"use strict";

(function (factory) {
	if (typeof Benchmark !== "undefined") {
		factory(Benchmark);
	} else {
		factory(require("benchmark"));
	}
})(function (Benchmark) {
	var suite = new Benchmark.Suite;



	suite.add("[...Array(1000)].map((_, i) => i)", function () {
		[...Array(1000)].map((_, i) => i)
	});

	suite.add("Array(1000).fill(null).map((_, i) => i);", function () {
		Array(1000).fill(null).map((_, i) => i);
	});

	suite.add("Array.from({ length: 1000 }, (_, i) => i);", function () {
		Array.from({ length: 1000 }, (_, i) => i);
	});

	suite.on("cycle", function (evt) {
		console.log(" - " + evt.target);
	});

	suite.on("complete", function (evt) {
		console.log(new Array(30).join("-"));

		var results = evt.currentTarget.sort(function (a, b) {
			return b.hz - a.hz;
		});

		results.forEach(function (item) {
			console.log((idx + 1) + ". " + item);
		});
	});

	console.log("Fill JavaScript Array #jsbench #jsperf");
	console.log(new Array(30).join("-"));
	suite.run();
});