Подборка новостей и статей для Android разработчиков.
Реклама и связь с автором @ab_manager
РКН https://abdev.by/rkn_tg_ab #MQRZR
Post #9907
7.78K
🤖 TLRU — эволюция LRU-кэша с учётом времени
Стандартный LRU-кэш не знает ничего о времени — он выбрасывает записи только когда заканчивается место. Поэтому в дисковом кэше Glide могут месяцами лежать устаревшие изображения, пока не будет достигнут лимит размера.
Команда Grab описала подход TLRU (Time-Aware LRU) — форк DiskLruCache с тремя дополнительными параметрами:
1️⃣ TTL — время жизни записи. Если
2️⃣ Минимальный порог — защита от полного сброса. Если пользователь долго не заходил и все записи устарели, кэш всё равно не очищается полностью — иначе при возвращении все изображения загружались бы заново
3️⃣ Максимальный размер — наследуется от LRU без изменений
Реализация аккуратная: метка времени последнего доступа хранится прямо в journal-файле, переживает перезапуски. Алгоритм оптимизирован — если самая старая запись ещё не устарела, остальные не проверяются.
Миграция со старого LRU безопасна в обе стороны: оригинальный
Мне нравятся такие решения, когда не надо переписывать с нуля, а точечно расширить проверенную реализацию. Три параметра поверх существующего механизма — и кэш наконец умеет забывать ненужное. Ну и честно - решение лежало на поверхности и вполне логичное.
🔗 Источник: engineering.grab.com
#Android #AndroidDev #Производительность #Оптимизация
Стандартный LRU-кэш не знает ничего о времени — он выбрасывает записи только когда заканчивается место. Поэтому в дисковом кэше Glide могут месяцами лежать устаревшие изображения, пока не будет достигнут лимит размера.
Команда Grab описала подход TLRU (Time-Aware LRU) — форк DiskLruCache с тремя дополнительными параметрами:
1️⃣ TTL — время жизни записи. Если
(текущее_время - время_последнего_доступа) > TTL, запись удаляется2️⃣ Минимальный порог — защита от полного сброса. Если пользователь долго не заходил и все записи устарели, кэш всё равно не очищается полностью — иначе при возвращении все изображения загружались бы заново
3️⃣ Максимальный размер — наследуется от LRU без изменений
Реализация аккуратная: метка времени последнего доступа хранится прямо в journal-файле, переживает перезапуски. Алгоритм оптимизирован — если самая старая запись ещё не устарела, остальные не проверяются.
Миграция со старого LRU безопасна в обе стороны: оригинальный
DiskLruCache читает TLRU journal, просто игнорируя временны́е суффиксы.Мне нравятся такие решения, когда не надо переписывать с нуля, а точечно расширить проверенную реализацию. Три параметра поверх существующего механизма — и кэш наконец умеет забывать ненужное. Ну и честно - решение лежало на поверхности и вполне логичное.
🔗 Источник: engineering.grab.com
#Android #AndroidDev #Производительность #Оптимизация
- 👍 42
- ❤ 15
- 👎 6
- 🔥 3
- 🤔 1
- 👌 1









