Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Напишите функцию makeProfileTimer, которая служит для замера времени выполнения друго (https://javascript.ru/forum/misc/76044-napishite-funkciyu-makeprofiletimer-kotoraya-sluzhit-dlya-zamera-vremeni-vypolneniya-drugo.html)

Marson 28.11.2018 15:58

Напишите функцию makeProfileTimer, которая служит для замера времени выполнения друго
 
Напишите функцию makeProfileTimer, которая служит для замера времени выполнения другого кода и работает следующим образом:

var timer = makeProfileTimer()
doSomething(); //некий код, время выполнения которого мы хотим измерить с высокой точностью
alert(timer()); //alert должен вывести время в микросекундах от выполнения makeProfileTimer до момента вызова timer(),
// т. е. измерить время выполнения doSomething

function makeProfileTimer(){
  var t1 = performance.now();
  return function (){
    var t2 = performance.now();
    console.log(t2-t2);
  }
}

 function greetAllSample(){
                   var arr = [];
                   for(var i=0;i<arguments.length;i++){
                       arr[i] = arguments[i];
                  }
                   return arr;
                  }
                  //alert("Hello" + greetAllSample(" Superman"));

var timer = makeProfileTimer();
console.log("Hello" + greetAllSample(" Superman"));
timer();


Помогите понять, уважаемые!

Marson 28.11.2018 16:06

Синтаксическая ошибка console.log(t2-t1); А так правильно?

j0hnik 28.11.2018 16:07

если хотим замерить с высокой точность, должно быть меньше абстракций
var time = performance.now();
// некий код (функция) которую будем мерить
time = performance.now() - time;
console.log('Время выполнения = ', time);

j0hnik 28.11.2018 17:08

Function.prototype.makeProfileTimer = function(...arg){
var time = performance.now();
var x = this(...arg);
time = performance.now() - time;
console.log('Время выполнения = ', time);
return x;
};

function otherFunc(a,b){
	console.log(a,b);
}

otherFunc.makeProfileTimer(1,2);


вот вам вариант
если хотите мерить скорость, вызываете метод makeProfileTimer и аргументы передаете в него.


Часовой пояс GMT +3, время: 02:47.