Мудрый производительностью: Много маленьких PNGs или одного большого PNG?

Это значит импортировать («использовать») макросы из ящика.

Начиная с Rust 1.30 , этот синтаксис больше не нужен, и вместо него можно использовать стандартное ключевое слово use.

Просмотрите главу о макросах из первого издания Языка программирования Rust для более подробной информации.

5
задан Kriem 4 May 2009 в 18:45
поделиться

5 ответов

Если вы в конечном итоге будете ссылаться на один и тот же CGImageRef (например, путем совместного использования UIImage *), изображение не будет загружаться несколько раз различными видами. Именно этот метод используется в демонстрационной программе Core Animation для видеостены, которая содержится в ключевой ноте WWDC 07 . Это код OSX, но UIViews очень похожи на CALayers.

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

Использование большое изображение, которое вы можете загрузить в момент рисования, если память для декодированного изображения, на которое указывает CGImageRef, была восстановлена ​​системой.

Разница не в том, сколько изображений у вас есть, а в том, как часто UIKit проходит через ваш код

7
ответ дан 18 December 2019 в 10:48
поделиться

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

Глядя на содержимое пакетов .app на обычной Mac OS, кажется, что общепринятым способом хранения является один файл / ресурс на изображение.

Конечно, это предполагает, что вы не получаете ресурсы изображения из web, где узкое место будет в http и в нем указано максимум два одновременных запроса.

4
ответ дан 18 December 2019 в 10:48
поделиться

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

2
ответ дан 18 December 2019 в 10:48
поделиться

Одно большое изображение удалит все накладные расходы, связанные с открытием и манипулированием многими изображениями в памяти.

2
ответ дан 18 December 2019 в 10:48
поделиться

Я бы сказал, что на этот вопрос нет авторитетного ответа. Одно большое изображение сокращает (медленный) доступ к флэш-памяти и выполняет декодирование за один раз, но множество меньших изображений дают вам лучший контроль над тем, какая обработка происходит, когда ... но это требует памяти, и вам нужно разрезать это изображение на части или замаскируйте его.

Вам нужно будет реализовать одно решение и протестировать его. Если это недостаточно быстро и вы не можете оптимизировать, внедрите другой. Я предлагаю реализовать версию, которую вам легче представить, потому что это будет проще всего реализовать.

1
ответ дан 18 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: