Характеристики использования памяти приложением являются фундаментальным аспектом его производительности. Вы можете использовать профилировщик системы для анализа этих характеристик, просматривая доступную информацию счетчиков графического процессора.
Адрено устройства
На устройствах Adreno начните с выделения периода времени, соответствующего одному кадру графического процессора, как описано в разделе «Оценка времени обработки кадров ЦП и графического процессора» . Используйте метод, описанный на этой странице, включающий использование % использования графического процессора или аналогичный счетчик для границ времени вашего кадра, поскольку все счетчики используют один и тот же метод синхронизации и позволят более точно оценить использование памяти (по сравнению с использованием кадра). временные границы, полученные из срезов графического процессора, данные которых собираются независимо от данных счетчика).
Чтение/запись итогов
Выделив один кадр в профилировщике, начните с просмотра счетчиков общего количества прочитанных (байт/сек) и общего количества записей (байт/сек) . Эти счетчики дают хорошее общее представление о том, какой объем данных проходит через шину памяти в течение одного кадра. Сделайте все возможное, чтобы свести к минимуму объем данных, отправляемых по шине, поскольку пропускная способность памяти является основным источником разряда батареи на мобильных устройствах.
Вы также можете проверить счетчики чтения памяти вершин (байт/секунда) и чтения памяти текстуры (байт/секунда), чтобы определить часть полосы пропускания, используемую для данных вершин и текстур.
То, что вы считаете «хорошим» для этих значений, зависит от типа рабочих нагрузок, наблюдаемых в вашем приложении. Например, 2D-приложения могут использовать относительно большие (~2+ ГБ/с) объемы пропускной способности чтения текстурной памяти, но пропускная способность вершинной памяти может быть очень минимальной (~50 МБ/с). Более подробную информацию можно найти в документации по Анализу пропускной способности памяти вершин и Анализу использования пропускной способности памяти текстур .
Принести киоски
Посмотрите на счетчики % Vertex Fetch Stall , % Texture Fetch Stall и % Stall on System Memory, поскольку они дадут вам некоторые подсказки об общей производительности памяти нашего приложения. Если значения превышают примерно 5 %, это означает, что ваше приложение либо неэффективно размещает данные в памяти, либо эффективно обращается к своим данным, чтобы воспользоваться преимуществами кеша. Ознакомьтесь с разделами Анализ пропускной способности памяти вершин и Анализ использования пропускной способности памяти текстур для получения подробной информации об улучшении использования памяти для этих типов ресурсов.
устройства Мали
На устройствах Mali сначала выделите период времени, соответствующий одному кадру графического процессора, как описано в разделе «Оценка времени обработки кадров ЦП и графического процессора» . Используйте метод, описанный на этой странице, включающий использование % использования графического процессора или аналогичный счетчик для границ времени вашего кадра, поскольку все счетчики используют один и тот же метод синхронизации и позволят более точно оценить использование памяти (по сравнению с использованием кадра). временные границы, полученные из срезов графического процессора, данные которых собираются независимо от данных счетчика).
Вывод внешних итогов
После того, как вы выделили один кадр в Профилировщике системы , начните с просмотра счетчиков Выходных внешних байт чтения и Выходных внешних байтов записи . Эти счетчики дают хорошее общее представление о том, какой объем данных проходит через шину памяти в течение одного кадра. Сделайте все возможное, чтобы свести к минимуму объем данных, отправляемых по шине, поскольку пропускная способность памяти является основным источником разряда батареи на мобильных устройствах.
Ввод внутренних итогов
Также есть счетчики, которые предоставляют информацию о самих тайниках. Вас интересуют счетчики «Входные внутренние циклы [чтения | записи]». Более высокие значения означают, что вы успешно обращаетесь к кешу, но делается слишком много запросов на чтение, и в результате код шейдера останавливается в ожидании доступа к памяти.
Принести киоски
Следующий набор счетчиков, на которые вы можете обратить внимание, — это счетчики задержки циклов предварительной выборки вершин и счетчики задержки выборки текстур, поскольку они дадут вам некоторые подсказки об общей производительности памяти нашего приложения. Если вы видите значения выше ~5%, это означает, что вы либо неэффективно размещаете наши данные в памяти, либо неэффективно получаете доступ к нашим данным, чтобы воспользоваться преимуществами кеша. Ознакомьтесь со статьями «Анализ пропускной способности памяти [Vertex|Texture]», чтобы узнать, как улучшить использование памяти для этих типов ресурсов.