Как уменьшить потребление памяти при использовании UIImage
Использование памяти связано с размерами изображения, а не с размером файла, в связи с чем при отображении HD картинок можно столкнуться с Out of memory exception.
Дело в том, что для отображения изображения на экране, iOS сначала необходимо декодировать и распаковать изображение. Обычно 1 пиксель декодированного изображения занимает 4 байта памяти — 1 байт для красного, 1 байт для зеленого, 1 байт для синего и 1 байт для альфа-канала.
Например, картинка в разрешении 3648 на 5472 будет весить примерно 80 MB 🤯
Автор статьи рассказывает как правильно реализовать отображение картинки и что такое downsampling
#optimization
Использование памяти связано с размерами изображения, а не с размером файла, в связи с чем при отображении HD картинок можно столкнуться с Out of memory exception.
Дело в том, что для отображения изображения на экране, iOS сначала необходимо декодировать и распаковать изображение. Обычно 1 пиксель декодированного изображения занимает 4 байта памяти — 1 байт для красного, 1 байт для зеленого, 1 байт для синего и 1 байт для альфа-канала.
Например, картинка в разрешении 3648 на 5472 будет весить примерно 80 MB 🤯
Автор статьи рассказывает как правильно реализовать отображение картинки и что такое downsampling
#optimization
🔥9👎1
Build Time Optimizations (Xcode)
Авторы статьи смогли сократить время билда на 21%. Приведем их советы по оптимизации кода:
1. Используйте "let", где возможно
2. Добавляйте final к классам
3. Явно объявляйте тип и избейгайте инициалзации через вызов
4. Делайте extension'ы приватными
5. Используете объявление кейсов перечислений с типом
6. Разбивайте сложные выражения на части
7. Избегайте лишних кастингов
8. Предпочтитайте if let вместо разворачивания через ??
#optimization
Авторы статьи смогли сократить время билда на 21%. Приведем их советы по оптимизации кода:
1. Используйте "let", где возможно
2. Добавляйте final к классам
3. Явно объявляйте тип и избейгайте инициалзации через вызов
.init
4. Делайте extension'ы приватными
5. Используете объявление кейсов перечислений с типом
6. Разбивайте сложные выражения на части
7. Избегайте лишних кастингов
8. Предпочтитайте if let вместо разворачивания через ??
#optimization
👍7👎1
Делаем плавный скролл в нагруженных таблицах
Способы оптимизации таблицы, рассмотренные в статье:
👉 Повторное использование ячеек/хедеров и футеров — первый и важный шаг оптимизации
👉 Уменьшить общее время загрузки и вычислений, их перевод в Background-очереди — значит упростить объем подсчетов
👉 Использование стандартных компонентов Core Animation для отрисовки ячеек позволит существенно ускорить процесс отображения и повысить производительность
👉 Кеширование данных для ячеек
👉 Нет ничего плохого в комбинации Auto Layout и ручного подсчета. Там, где не хватает производительности — использовать ручной подсчет
#optimization
Способы оптимизации таблицы, рассмотренные в статье:
👉 Повторное использование ячеек/хедеров и футеров — первый и важный шаг оптимизации
👉 Уменьшить общее время загрузки и вычислений, их перевод в Background-очереди — значит упростить объем подсчетов
👉 Использование стандартных компонентов Core Animation для отрисовки ячеек позволит существенно ускорить процесс отображения и повысить производительность
👉 Кеширование данных для ячеек
👉 Нет ничего плохого в комбинации Auto Layout и ручного подсчета. Там, где не хватает производительности — использовать ручной подсчет
#optimization
👍9❤3👎2🤔1😢1
Управление загрузками в Xcode
Начиная с Xcode 14, симуляторы для watchOS и tvOS доступны в виде отдельных загрузок. Данное решение позволяет значительно уменьшать размер загрузки приложения, однако теперь вам придется самостоятельно управлять этими большими (3-4 ГБ) компонентами.
Автор сэкономил 32ГБ дискового пространства, подробнее в статье
#optimization
Начиная с Xcode 14, симуляторы для watchOS и tvOS доступны в виде отдельных загрузок. Данное решение позволяет значительно уменьшать размер загрузки приложения, однако теперь вам придется самостоятельно управлять этими большими (3-4 ГБ) компонентами.
Автор сэкономил 32ГБ дискового пространства, подробнее в статье
#optimization
👍5
How We Reduced Our iOS App Launch Time by 60%
В Амазон подсчитали, что каждая задержка в 0,1 секунду при загрузке экрана приводит к 1% потери прибыли 🤯
Для Амазона 1% прибыли - это 3.8 млрд$. В приложенной статье автор как раз рассказывает о том, как сократить время закгрузки приложения на 60%!
Вот несколько его советов:
👉 Вместо инициализации String(describing:) - используйте ObjectIdentifier(). Такой трюк уменьшил время закгрузки приложения на 11%
👉 Прекратите преобразовывать ненужные объекты в AnyHashable. 29% буста при запуске прилежения
👉 Проверяйте инициализацию сторинних фреймворков - до 40%
#optimization
В Амазон подсчитали, что каждая задержка в 0,1 секунду при загрузке экрана приводит к 1% потери прибыли 🤯
Для Амазона 1% прибыли - это 3.8 млрд$. В приложенной статье автор как раз рассказывает о том, как сократить время закгрузки приложения на 60%!
Вот несколько его советов:
👉 Вместо инициализации String(describing:) - используйте ObjectIdentifier(). Такой трюк уменьшил время закгрузки приложения на 11%
👉 Прекратите преобразовывать ненужные объекты в AnyHashable. 29% буста при запуске прилежения
👉 Проверяйте инициализацию сторинних фреймворков - до 40%
#optimization
👍7👎1