Когда приложение или игра имеет все больше и больше функций, важность оптимизации производительности становится очевидной.Более того, функции приложения или игры постепенно сходятся, и улучшение пользовательского опыта сместилось от самого дизайна продукта к плавности приложения. С точки зрения производительности, это также заставляет все больше и больше разработчиков уделять больше внимания оптимизации и тестированию производительности. Некоторое время назад команда PerfDog R&D принесла "Производительность игры Tencent в реальном боевом случае резкое изменение частоты кадров 1.0"и"Должны ли приложения и игры обращать внимание на Jank Caton?«Две профессиональные аналитические статьи о частоте кадров и Jank, на этот раз мы рассмотрим, какие термины будут встречаться в тесте оптимизации производительности.
FPS
FPS — это определение в поле изображения, которое относится к количеству кадров в секунду, отображаемых на экране. FPS — это показатель количества информации, используемой для сохранения и отображения динамического видео. Чем больше кадров в секунду, тем плавнее отображаемое действие. FPS также можно понимать как частоту обновления, о которой мы часто говорим, реальное среднее количество обновлений игрового экрана или интерфейса приложения в течение 1 секунды, широко известное как частота кадров/FPS.
1.Avg(FPS): Средняя частота кадров (среднее значение FPS за определенный период времени)
2.Var(FPS): отклонение частоты кадров (отклонение FPS за определенный период времени)
3. Падение (FPS): количество падений кадров (среднее количество раз, когда две соседние точки FPS падают более чем на 8 кадров в час).
Вы можете обратиться к таблице ниже, задержка не должна превышать 100 миллисекунд, когда пользователи играют в игры, иначе пользовательский опыт будет очень плохим. Пользователи могут почувствовать задержку в 100-300 миллисекунд, и если она больше 1 секунды, то внимание пользователя будет отвлечено, и пользователи закроют приложение более чем на 10 секунд.
Jank
Количество зависаний в 1 с, аналогично зависанию Jank в Android и статистическому принципу гладкости FramePacing в iOS. Высокая частота кадров FPS не отражает плавности или отсутствия заиканий. Например: FPS составляет 50 кадров, один кадр обрабатывается за первые 200 мс, а за последние 800 мс — 49. Несмотря на то, что частота кадров составляет 50, он все равно сильно застревает. При этом низкая частота кадров FPS не означает заиканий, например, когда лагов нет, средний FPS составляет 15 кадров. Поэтому средняя частота кадров FPS не имеет прямого отношения к фризам.
Для получения более подробной информации о Jank, пожалуйста, обратитесь к 《Должны ли приложения и игры обращать внимание на Jank Caton?"Эта статья.
Метод расчета PerfDog: если одновременно выполняются два условия, считается, что Jank застрял.
1. Текущий кадр занимает более чем в 2 раза среднее время первых трех кадров.
2. Текущее время кадра > время двух кадров фильма (1000 мс/24*2=84 мс).
Если оба условия выполняются одновременно, это считается серьезным BigJank.
1. Текущий кадр занимает более чем в 2 раза среднее время первых трех кадров.
2. Время текущего кадра > время кадра трехкадрового фильма (1000 мс/24*3=125 мс).
Идея расчета: принимая во внимание визуальную инерцию, предполагая среднее время кадра предыдущих трех кадров в качестве эталона, в качестве временного интервала вертикальной синхронизации, если нет нового обновления экрана рендеринга для двух последовательных вертикальных синхронизаций, это считается потенциальным зависанием, что то есть следующий кадр требует времени.Если среднее время кадра в 2 раза больше, чем среднее время кадра первых трех кадров, это считается потенциальным зависанием. В то же время один кадр занимает более чем в два раза больше времени, необходимого для кадра фильма, чтобы снять 1000 мс/24*2 (поскольку человеческий глаз может различить прерывистость изображения только тогда, когда он составляет менее 24 кадров). считается настоящей заморозкой. В то же время, если один кадр занимает более чем в 3 раза больше времени кадра фильма, это считается серьезным зависанием.
Примечание. Почему vsync дважды? GPU вообще имеет 3 буфера, и текущий кадр занял один буфер, то есть осталось 2 буфера, а человеческий глаз вообще может допустить задержки в 2 кадра. Почему два кадра фильма отнимают много времени? Ниже 24 кадров человеческий глаз может воспринимать прерывистость изображения, а фильмы обычно состоят из 24 кадров. То есть кадр фильма занимает 1000 мс/24=41,67 мс, кадр фильма из двух кадров занимает 41,67 мс*2, а кадр фильма из трех кадров занимает 41,67 мс*3.
1. BigJank: количество серьезных зависаний за 1 с
2.Jank(/10min): среднее количество зависаний за 10 минут.
3.BigJank(/10min): Среднее количество серьезных зависаний за 10 минут.
FTime
Отображается временной интервал между верхним и нижним кадрами, то есть кадр считается трудоемким.
1.Avg(FTime): Среднее время кадра
2. Дельта (FTime): дополнительные затраты времени (количество раз, когда разница во времени между двумя кадрами составляет в среднем> 100 мс в час)
CPU Usage
Общий процесс машины/приложения, использование ЦП на самом деле представляет собой ресурсы ЦП, занятые запускаемыми вами программами, что указывает на ситуацию с запуском программ на вашем компьютере в определенный момент времени. Чем выше уровень использования, тем больше программ запущено на вашем компьютере в это время, и наоборот. Уровень использования напрямую связан с мощностью вашего процессора и качеством оптимизации программы.
CPU Clock
Частота и использование отдельных ядер ЦП
Memory
Память используется для временного хранения рабочих данных в ЦП и данных, которыми обмениваются внешние запоминающие устройства, такие как жесткие диски. Пока мобильный терминал работает, ЦП будет передавать вычисляемые данные в память для работы.По завершении операции ЦП передаст результат.Объем занимаемой памяти определяет, может ли мобильный терминал работать стабильно . Фактическая физическая память, используемая Android PSS Memory, статистические результаты согласуются со стандартными результатами Android Java API, а также согласуются с Meminfo. iOS — это статистический FootPrint, примечание: OOM связан с FootPrint, а не с системой или моделью. Относится только к оперативной памяти, например, к машинам с памятью 1G. Размер FootPrint превышает 650 МБ, что приводит к OOM.
Xcode Memory
Статистический метод XCode Debug Gauges — это память XCode.
Real Memory
Статистический метод Xcode Instrument — Real Memory, который фактически занимает физическую память. Примечание. Физическая память связана с системной политикой, и на нее не стоит обращать внимание.
Swap Memory
Подкачка памяти, некоторые устройства поддерживают функцию подкачки.После включения функции подкачки система будет сжимать память PSS.Если подкачка увеличится, соответственно уменьшится PSS.Поскольку сжатие будет занимать ресурсы процессора, соответственно уменьшится FPS.
Virtual Memory
Виртуальная память — это метод управления памятью компьютерных систем. Это заставляет приложение думать, что оно имеет непрерывную доступную память (непрерывное полное адресное пространство), тогда как на самом деле оно обычно разделено на несколько фрагментов физической памяти, а некоторые временно хранятся на внешнем дисковом хранилище, когда необходим обмен данными.
потребление памяти
VSS — потребление виртуальной памяти Virtual Set Size (включая память, занимаемую разделяемыми библиотеками)
RSS — Размер резидентного набора фактически использует физическую память (включая память, занятую разделяемыми библиотеками).
PSS — Proportional Set Size фактическая используемая физическая память (пропорциональное распределение памяти, занимаемой разделяемыми библиотеками)
USS — физическая память, занимаемая только процессом уникального набора размеров (исключая память, занимаемую общей библиотекой).
Вообще говоря, размер используемой памяти выглядит следующим образом: VSS >= RSS >= PSS >= USS
OOM
OOM, полное название «Недостаточно памяти», представляет собой переполнение памяти, которое обычно вызывается неправильным использованием памяти разработчиками программ, например, неспособностью освободить освобожденные ресурсы памяти, что приводит к тому, что память компьютера не может быть использована. снова и память компьютера исчерпана. Просто перезагрузите компьютер, но фундаментальное решение — оптимизировать код.
Недостаток памяти может вызвать множество проблем:
1. Программа зависает, а скорость отклика низкая (виртуальная машина JVM часто запускает сборщик мусора при высоком использовании памяти)
2. Исчезает необъяснимым образом (чем больше памяти занимает ваша программа, тем больше вероятность, что она будет убита в фоне. Наоборот, чем меньше объем памяти, тем дольше она будет существовать в фоне)
3. Прямой сбой (OutOfMemoryError)
ANR
В Android, если ваше приложение не отвечает в течение определенного периода времени, система отображает диалоговое окно для пользователя, называемое диалоговым окном «Приложение не отвечает». Пользователь может выбрать «подождать» и позволить программе продолжить работу или выбрать «принудительное закрытие». Таким образом, ANR не может появиться в гладком и разумном приложении и позволить пользователю каждый раз иметь дело с этим диалогом. Поэтому важно спроектировать отзывчивость в программе так, чтобы система не отображала пользователю ANR. По умолчанию максимальное время выполнения Activity в android составляет 5 секунд, а максимальное время выполнения BroadcastReceiver — 10 секунд.
Wakeups
Количество пробуждения потока. Примечание: более 150 процессов могут быть уничтожены системой.
CSwitch
Тест переключения контекста. Примечание: более 14000 процессов на одном ядре будут уничтожены системой.
GPU Usage
Использование графического процессора, PerfDog в настоящее время поддерживает телефоны с чипом Qualcomm.
GPU Frequency
Частота графического процессора, PerfDog в настоящее время поддерживает телефоны с чипом Qualcomm.
GPU Utilization
Render/Tilter/Device
1.Render: использование средства визуализации (на этапе обработки пиксельного шейдера, если соотношение высокое, это означает, что на этапе PS есть узкое место, шейдер слишком сложен или размер текстуры и выборка сложны и т. д.)
2. Tilter: Использование наклона (на этапе обработки вершинного шейдера, если соотношение высокое, это означает, что на этапе VS существует узкое место, слишком много вершин и т. д.)
3.Device: Использование устройства (общее использование графического процессора)
Network
Целевой процесс Recv получает скорость трафика, а целевой процесс Send получает и отправляет скорость трафика.
CTemp
Температура процессора
BTemp
температура батареи
Battery Power
Текущий ток, напряжение и потребляемая мощность всей машины в режиме реального времени (Примечание: PerfDog в настоящее время определяется несколько раз в секунду на платформе Android; один раз каждые 20 секунд на платформе iOS, что является наиболее точным статистическим методом в настоящее время. результаты соответствуют результатам времени автономной работы, поддерживаются все модели iOS)
Energy Usage
Это Xcode Energy Impact. Мониторинг энергопотребления приложений (включая ЦП, ГП, сеть, местоположение, дисплей (только для iPhone X), накладные расходы).
Примечание: соответствует результатам Xcode Energy Impact. Проверено в проводном режиме. Общая энергия 1000 — очень высокий.
Выше приведено краткое изложение некоторых терминов, которые будут встречаться в тесте на оптимизацию производительности. Некоторые упущения неизбежны. Добро пожаловать в сообщество PerfDog (https://bbs.perfdog.qq.com). /) для обмена и дополнения.
PerfDog, новейший полноплатформенный инструмент для анализа производительности мобильных устройств, уже поддерживает тестирование большинства упомянутых выше параметров производительности, таких как PFS игры, использование графического процессора, температура процессора, энергопотребление аккумулятора и т. д., которыми занимаются обозреватели мобильных телефонов. больше всего обеспокоены, а инженеры-разработчики и инженеры-испытатели больше всего обеспокоены использованием ЦП, использованием памяти, скоростью сетевого трафика и т. д. Если вы также заинтересованы в тестировании оптимизации производительности, вы можете перейти на официальный сайт PerfDog, чтобы загрузить и попробовать его. В дальнейшем команда исследований и разработок PerfDog продолжит предоставлять вам высококачественный контент для глубокого технического анализа различных параметров производительности, так что следите за обновлениями.