Показать сообщение отдельно
  #1 (permalink)  
Старый 06.07.2017, 20:15
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Среднее время выполнения функции, запущенной n-раз с интервалом k
Используя наработки в предыдущей моей теме:
"Самый быстрый и короткий способ получить текст до первого пробела",

решил сделать функцию вычисления среднего времени запуска тестовой функции n-раз с паузой между запусками k, но не получилось:

var
arr = [], // массив времен выполнения
i = 0, n = 10, // запустить тестовую функцию 10 раз
k = 2000, // интервал запуска
p = performance, // штуковина для точного измерения времени?
result, // сюда сохраним среднее значений массива 'arr'
timerId,
t0, t1; // соответственно, моменты запуска и завершения тест. функции

function test(){
 'lorem'.repeat(10000) // повторяем и соединяем строку 'lorem'
}

timerId = setTimeout(function run(){
  t0 = p.now(); // время запуска
  test();  // тестовая функция
  t1 = p.now(); // время завершения
  arr.push(t1 - t0); // время выполнения
  if (i < n){ // проверяем сколько раз запустили тестовую функцию
    i++
  }
  else {
    clearTimeout(timerId); // сброс
    result = (arr.reduce((a,b)=>a+b,0))/arr.length // вычисляем среднее времен выполнения
  };
  setTimeout(run, k);
}, k);

alert(result);  // undefined -> расстроен ((


Запускать функцию хочу как тут:
https://learn.javascript.ru/settimeout-setinterval

Цитата:
"Рекурсивный setTimeout гарантирует паузу между вызовами, setInterval – нет"

Цель: ->

Последний раз редактировалось Teamur, 06.07.2017 в 20:23.
Ответить с цитированием