Характеристики использования памяти приложением являются фундаментальным аспектом его производительности. Вы можете использовать Системный профилировщик для анализа этих характеристик, просмотрев доступную информацию о счетчиках графического процессора.
Адрено-устройства
На устройствах Adreno начните с выделения временного промежутка, соответствующего одному кадру GPU, как описано в разделе «Оценка времени обработки кадров на ЦП и GPU» . Используйте описанный на этой странице метод, включающий использование счетчика процента использования GPU или аналогичного счетчика для определения временных границ кадра, поскольку все счетчики используют один и тот же метод измерения времени, что позволит получить более точные оценки использования памяти (по сравнению с использованием временных границ кадра, полученных из фрагментов GPU, данные которых собираются независимо от данных счетчика).

Итоговые значения операций чтения/записи
После того, как вы выделили отдельный кадр в профилировщике, начните с просмотра счетчиков «Общее количество прочитанных данных (байт/сек)» и «Общее количество записанных данных (байт/сек)» . Эти счетчики дают хорошее общее представление о том, сколько данных проходит через шину памяти в течение одного кадра. Постарайтесь минимизировать объем данных, передаваемых по шине, поскольку пропускная способность памяти является значительным источником разряда батареи на мобильных устройствах.

Также можно изучить счетчики чтения из вершинной памяти (байты/секунду) и чтения из текстурной памяти (байты/секунду), чтобы определить долю полосы пропускания, используемую для данных вершин и текстур.

То, что вы считаете «хорошим» значением этих параметров, зависит от типа рабочей нагрузки в вашем приложении. Например, в 2D-приложениях может использоваться относительно большой объем пропускной способности чтения текстурной памяти (~2+ ГБ/с), но пропускная способность вершинной памяти может быть очень минимальной (~50 МБ/с). Для получения более подробной информации ознакомьтесь с документацией по анализу пропускной способности вершинной памяти и анализу использования пропускной способности текстурной памяти .
Прилавки для выноса
Обратите внимание на счетчики % Vertex Fetch Stall , % Texture Fetch Stall и % Stall on System Memory, поскольку они дадут вам представление об общей производительности памяти вашего приложения. Если значения превышают примерно 5%, это говорит о том, что ваше приложение либо неэффективно размещает данные в памяти, либо эффективно обращается к ним, используя преимущества кэша. Для получения более подробной информации об улучшении использования памяти для этих типов ресурсов ознакомьтесь со счетчиками Analyze vertex memory bandwidth и Analyze texture memory bandwidth usage .

Устройства Мали
На устройствах Mali начните с выделения временного промежутка, соответствующего одному кадру GPU, как описано в разделе «Оценка времени обработки кадров на ЦП и GPU» . Используйте описанный на этой странице метод, включающий использование счетчика процента использования GPU или аналогичного счетчика для определения временных границ кадра, поскольку все счетчики используют один и тот же метод измерения времени, что позволит получить более точные оценки использования памяти (по сравнению с использованием временных границ кадра, полученных из фрагментов GPU, данные которых собираются независимо от данных счетчика).

Итоговые внешние данные
После того, как вы выделили отдельный кадр в системном профилировщике , начните с просмотра счетчиков «Выходные внешние байты чтения» и «Выходные внешние байты записи» . Эти счетчики дают хорошее общее представление о том, сколько данных проходит через шину памяти в течение одного кадра. Постарайтесь минимизировать объем данных, передаваемых по шине, поскольку пропускная способность памяти является значительным источником разряда батареи на мобильных устройствах.

Ввод внутренних итогов
Также существуют счетчики, предоставляющие информацию о самих кэшах. Вас интересуют счетчики «Внутренние циклы задержки чтения/записи». Более высокие значения этих счетчиков означают, что обращение к кэшу происходит успешно, но запросов на чтение слишком много, и в результате код шейдера задерживается, ожидая доступа к памяти.

Прилавки для выноса
Следующий набор счетчиков, на который вы можете обратить внимание, — это счетчики задержек при предварительной выборке вершин и задержек при выборке текстур, поскольку они дадут вам представление об общей производительности памяти вашего приложения. Если вы видите значения выше ~5%, это означает, что вы либо неэффективно размещаете данные в памяти, либо обращаетесь к ним неэффективно, чтобы использовать преимущества кэша. Подробнее о том, как улучшить использование памяти для таких ресурсов, читайте в статьях «Анализ пропускной способности памяти для [вершин|текстур]».
