Видеокарты

Что считать за минимальный FPS? Так ли прост вопрос, как кажется?

⇣ Содержание

Предисловие

Данная статья является дальнейшим развитием идей, затронутых в статье "Методика тестирования видеокарт 2007. Использование FRAPS". Использование утилиты FRAPS в качестве инструмента тестирования и предложенная нами методика обработки результатов позволяет по-новому взглянуть на привычные, казалось бы, вещи. Более того, в ходе анализа полученных данных возникают новые вопросы. С одним из них мы и хотим вас познакомить.

Предварительные замечания

Как вы все хорошо знаете, наиболее распространенным критерием производительности видеокарт является среднее значение FPS (frame per second, или кадров/с), полученное при тестировании в том или ином приложении (как правило, в 3D-играх). В синтетических 3D-приложениях могут использоваться как обычные FPS, так и свои собственные величины (например – «marks», они же «попугаи»). Сегодня мы не будем рассматривать «синтетику», а ограничимся лишь играми, поскольку производительность видеосистемы в реальной игре гораздо более важна с точки зрения комфортного времяпрепровождения, чем рекорды «в попугаях». А комфорт в различных игрушках, в свою очередь, очень сильно зависит от минимального FPS, который может обеспечить видеокарта. Впрочем, не только видеокарта, а скорее система в целом. Причины «проседания» FPS могут быть самые разные. Это и одновременное появление в сцене большого числа объектов (взрыв, осколки и т.д.), и недостаток оперативной памяти (необходимость подгрузки данных), и медленный жесткий диск (или сильно фрагментированный), да мало ли что может быть. Рассуждая таким образом, легко прийти к выводу, что минимальный FPS отнюдь не всегда определяется только мощностью видеокарты, а может зависеть от производительности других компонентов системы. В тоже время, казалось бы, зачем сыр-бор разводить? Многие игры, обладающие встроенными бенчмарками, показывают не только среднее значение FPS, но так же минимальный и максимальный FPS, полученный в ходе тестирования. Однако все не так просто. Если вы читали статью "Методика тестирования видеокарт 2007. Использование FRAPS", то могли заметить, что результаты, сообщаемые встроенным бенчмарком, могут разительно отличаться от результатов, полученных с помощью FRAPS. В тот раз речь шла о среднем FPS, но вполне разумно предположение, что могут быть значительные расхождения и для минимального FPS. К тому же, что именно считать «минимальным FPS» - сам по себе большой вопрос. Изучением этих моментов мы сегодня и займемся.

Методика тестирования и обработки результатов

Как уже говорилось выше, данный материал является логическим продолжением статьи "Методика тестирования видеокарт 2007. Использование FRAPS". Собственно, методы получения и обработки результатов (с помощью FRAPS) остались неизменными, поэтому здесь мы не будем подробно на них останавливаться. Но необходимо сделать одно разъяснение, касательного способа получения мгновенного значения FPS из времени рендеринга каждого кадра. В прошлый раз автор посчитал, что данный момент очевиден и не вызовет затруднений у читателей. Однако такие манипуляции с временем рендеринга кадра для некоторых читателей оказались сродни «шаманству», да и понятие «мгновенного FPS» в данном контексте также вызвало вопросы. На самом деле, все просто. Пусть у нас есть некоторая величина, предположим – скорость, размерность которой выглядит как «расстояние за единицу времени». Мы взяли в качестве примера «скорость» постольку поскольку производительность видеокарты, измеряемая в FPS, тоже, по сути, является скоростью, и обладает размерностью «количество кадров в единицу времени». Что касается средних величин скорости, тут все понятно. Берем общий путь (общее количество отрендеренных кадров) и делим на затраченное время. Получаем среднюю скорость (среднее значение FPS). C мгновенными значениями скоростей дело обстоит несколько сложнее, но тоже разобраться можно. Предположим, что мы едем на автомобиле, по городу, из точки А в точку Б. Понятно, что скорость движения не будет все время одинакова. На светофоре придется остановиться на «красный», а на проспекте можно и прибавить скорость. То есть - мгновенная скорость будет меняться. Измерять мгновенную скорость каноническим способом, с помощью рулетки и секундомера, как пройденный путь, разделенный на отрезок времени, будет довольно затруднительно. А вот одного взгляда на спидометр будет достаточно, чтобы узнать эту самую мгновенную скорость в любой момент времени. В 3D-приложениях ситуация похожа, какие-то кадры компьютер отрисовывает быстро, какие-то медленнее, а роль «спидометра» играют различные утилиты, такие как FRAPS, RivaTuner и т.д. Однако записывать мгновенные значения FPS, отображаемые утилитами в ходе тестов, довольно утомительно, не говоря уже о возможных «ошибках оператора». Поэтому мы и брали лог-файл FRAPS под названием « … frametimes.csv», в котором хранятся данные о времени рендеринга каждого кадра. Теперь поподробнее расскажем, как из времени рендеринга кадра получить мгновенное значение FPS. Допустим какой-то кадр рендерился в течение 25-ти миллисекунд. Чтобы получить значение FPS, необходимо взять обратную величину к времени рендеринга и умножить ее на 1000 (так как изначально были миллисекунды, а нам надо привести это к секундам), примерно так - «(1 кадр / 25 миллисекунд) * 1000». В итоге получим величину 40 кадров/секунду. Как видите, размерность итоговой величины совпадает с размерностью FPS и выражается в кадрах/секунду. Некоторых читателей смутил момент, что исходное время рендеринга бралось равным не одной секунде, дескать, «FPS то к секунде приводится, значит везде и надо брать отрезок времени именно такой». На самом деле разницы нет. Хоть мы возьмем один кадр длиной 25 мс, хоть 40 кадров каждый по 25 мс – мгновенная скорость будет одинакова. Если вы хотите узнать, с какой скоростью едет ваш автомобиль, не обязательно же нарезать круги в течение часа и считать число километров. Тем более что так вы получите скорее среднюю, а не мгновенную скорость. Именно поэтому мы обрабатывали значения для времени рендеринга каждого кадра и вычисляли соответствующую мгновенную производительность в FPS. Проиллюстрировать вышеизложенное можно следующим образом. Давайте построим график, по оси Х которого отложено время в миллисекундах, а «импульсы» демонстрируют отрезки времени, в течение которых отрисовывается каждый кадр. Для простоты картины возьмем интервал времени, равный одной секунде.
graph1-render-time.gif
Как видно из графика, в одну секунду отрендерилось 18 кадров, то есть значение FPS, если считать его привычным образом, как раз и равно 18 кадров/с. Но это значение не является мгновенным! Так как время рендеринга каждого кадра не одно и то же, а существенно отличается от кадра к кадру. Поэтому такое «мгновенное» значение FPS в каждую секунду времени, по сути, является усредненным. Собственно, именно такие значения мы и видим в файле в лог-файле FRAPS с именем «… fps.csv». Период усреднения уменьшился до одной секунды, но суть осталась прежней – это средние значения FPS в каждую секунду времени. Если же мы пересчитаем время рендеринга каждого кадра по нашей методике, то получим следующую диаграмму FPS.
graph2-fps-at-moment.gif
На этой диаграмме мы вместо «импульсов» отобразили мгновенные значения FPS для каждого кадра и поместили их в середину каждого «импульса». Для наглядности, ось Х осталось прежней, с отметками времени в миллисекундах, а по оси Y отложены значения FPS. Если мы теперь подсчитаем среднее значение FPS из вычисленных мгновенных значений для каждого кадра, то получим значение 25,7 FPS. Как видите, разница по сравнению с прежними 18 FPS – огромная! Не говоря уже о взлетах и провалах величины FPS, которые скрадываются даже таким маленьким интервалом времени, как одна секунда. Собственно, тема минимальных FPS и есть то, ради чего затевалась данная статья. Теперь, после несколько затянувшегося вступления, мы спокойно можем заняться этим вопросом.

Следующая страница →
 
⇣ Содержание
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Материалы по теме
⇣ Комментарии
window-new
Soft
Hard
Тренды 🔥