Function runtime
Measures the time of execution of the function.
by cyber cyber
JavaScript
(function () {
var res = [];
/**
* @param {{
countCall: number,
countIterat: number,
functions: array,
funcParams: array}
* @params functions for test
* @returns {Array} со среднем временем выполнения функции, в переданном порядке
*/
function runtime(params) {
// countCall * countIterat = кол-во вызовов функии
var countCall = 10000, // кол-во вызовов функции
countIterat = 100, // количество повторов вызовов
fnc;
var start = 0;
if (typeof params == 'object') {
start = 1;
}
fnc = [].slice.call(arguments, start);
countCall = params.countCall || countCall;
countIterat = params.countIterat || countIterat;
for (var i = 0; i < fnc.length; i++) {
for (var j = 0; j < countIterat; j++) {
test(fnc[i], countCall, params.funcParams);
}
}
return compare(res);
}
function test(fnc, count, params) {
if (!res[fnc]) res[fnc] = [];
var d = new Date;
for (var i = 0; i < count; i++)
fnc.apply(this, params);
res[fnc].push(new Date - d);
};
function compare(arr) {
var keys = Object.keys(arr),
results = [],
j = 0;
keys.forEach(function (key) {
results[j] = 0;
arr[key].forEach(function (i) {
results[j] += i;
});
results[j] = Math.round(results[j] / arr[key].length);
j++;
});
return results;
}
window.Runtime = runtime;
}());