JSFiddle - React, Tailwind, and code Playground

by balefrost

JavaScript

function timeFn(name, times, fn) {
	var start = Date.now();
	for (var i = 0; i < times; ++i) {
  	fn();
  }
  var stop = Date.now();
  console.log(name, ":", stop - start, "ms");
}

function Callable2(f, a0, a1) {
	this._f = f;
  this._a0 = a0;
  this._a1 = a1;
}

Callable2.prototype.invoke = function() {
	return this._f(this._a0, this._a1);
};

function Callable0(f) {
	this._f = f;
}

Callable0.prototype.invoke = function() {
	return this._f();
};

var rounds = 3;
var times = 10000000;

function foo(a, b) {
	return a + b;
}

function bar() {
	return 5 * 4 * 3 * 2;
}

for (var round = 0; round < rounds; ++round) {
	var c2 = new Callable2(foo, 4, 5)
  var c0 = new Callable0(bar);
  timeFn("Callable2", times, function() {
  	c2.invoke();
  });

  timeFn("two-param function", times, function() {
  	foo(4, 5);
  });
  
  timeFn("Callable0", times, function() {
  	c0.invoke();
  });

  timeFn("two-param function", times, function() {
  	bar();
  });
}