Отслеживание кадров в секунду с помощью jQuery

#jquery #frame-rate

Вопрос:

В основном я делаю некоторые анимации с помощью jQuery, и в целях отладки я хотел бы посмотреть, сколько кадров в секунду выполняется в моих анимациях.

Существуют ли какие-либо сценарии, которые делают такую вещь, или простое решение? А если нет, то как я мог бы этого достичь?

Заранее спасибо!

Комментарии:

1. Как насчет моего предложения? У меня здесь нет ничего, чтобы это проверить, но я думаю, что это должно сработать.

Ответ №1:

На случай, если у кого-то еще возникнет этот вопрос: https://github.com/mrdoob/stats.js

У мистера Дуба есть отличный маленький плагин для определения частоты кадров

Ответ №2:

Что вы могли бы сделать, так это создать глобальную переменную, которая увеличивается на единицу при каждом отображении кадра, а затем с помощью setInterval параметра установить это значение обратно в 0 и вывести значение.

 var frames = 0;

function render_frame(){

    /* With this function I mean the place where you render a frame */
    frames  ;    

}

setInterval(function() {

    $('#fps').html(frames ' fps');
    frames = 0;

}, 1000);
 

Таким образом, вы начинаете с частоты кадров 0, и в течение одной секунды подсчитывается количество кадров, затем в конце секунды счетчик кадров сбрасывается и выводится, что приводит к кадрам в секунду.

Комментарии:

1. Проблема здесь в том, что я не могу отслеживать «каждый» кадр отдельно при анимации animate() … Или, может быть, я просто не нашел способа сделать это. Плюс к тому, что одновременно анимируется несколько элементов, что влияет на фактический FPS.