Как измерить скорость выполнения JavaScript кода?

Привет всем! У меня возник вопрос по поводу производительности JavaScript. Я написал простой цикл, который должен выполнить миллион итераций, и засек время его работы. Вот мой код:

function измеритьВремя() {
  let начало = Date.now();
  for (let i = 0; i < 1000000; i++) {
    // пустой цикл
  }
  let конец = Date.now();
  return конец - начало;
}

Но результаты меня удивили. Мой процессор работает на частоте 2 ГГц, а цикл выполняется примерно за 0.5 секунды. Это получается всего около 2 млн операций в секунду или 2 МГц.

Почему использование процессора такое низкое? Я ожидал гораздо большей производительности. Может быть, я что-то делаю не так при измерении? Буду благодарен за любые идеи!

Хм, интересный вопрос! Я тоже сталкивался с подобным, когда пытался измерить скорость JavaScript. На самом деле, пустой цикл - не самый лучший способ оценить производительность. Браузеры и движки JavaScript очень умные, они могут оптимизировать такой код. Попробуй добавить какие-нибудь вычисления внутрь цикла, например, Math.random() или что-то подобное. Еще советую использовать console.time() и console.timeEnd() для более точных замеров. А вообще, для серьезных тестов производительности лучше использовать специальные инструменты вроде Benchmark.js. Они дают более надежные результаты.

Проверял бы, как ведёт себя цикл с реальными вычислениями. Оптимизации движка могут искажать замеры, когда цикл пустой. Использование Performance API или Benchmark.js даст точнее результаты. Почему скорость невысока – дело в оптимизациях и особенностях интерпретации JavaScript.

Ты упускаешь важный момент - движок JS оптимизирует пустые циклы. Попробуй добавить реальные операции, типа arr.push(Math.random()). Еще лучше юзать performance.now() вместо Date.now() - точнее будет. А вообще для микробенчмарков есть спец библиотеки вроде Benchmark.js, они учитывают кучу нюансов. Просто так померять скорость JS кода - та еще задачка, на самом деле.