Слайд 2Введение. Вычисление числа Фибоначчи
Классический код
public final class Fibonacci {
public static
long calc(long n) {
if (n < 2) {
return n;
} else {
return calc(n - 1) + calc(n - 2);
}
}
}
Слайд 3Введение. Вычисление числа Фибоначчи
* Измерялось на машине Intel® Core™ i7-6700HQ CPU @
2.60GHz × 8
Слайд 4Введение. Вычисление числа Фибоначчи
Слайд 5Введение. Вычисление числа Фибоначчи
Оптимизированный код
public final class Fibonacci {
public static long
calc(long n) {
long a = 0L;
long b = 1L;
for (long i = 0; i < n - 1; i++) {
long c = a + b;
a = b;
b = c;
}
return b;
}
}
Слайд 6Введение. Вычисление числа Фибоначчи
* Измерялось на машине Intel® Core™ i7-6700HQ CPU @
2.60GHz × 8
Слайд 7Кэширование. Определение
Кэширование - обмен скорости на память
Слайд 8Кэширование. Что стоит кэшировать
Что кэшировать?
Результаты вычислений часто повторяющихся запросов;
Соединения, потоки. Например, connection
pool для бд, почтового сервера.
Слайд 9Кэширование. Что стоит кэшировать. Что не надо
Что кэшировать?
Результаты вычислений часто повторяющихся запросов;
Соединения,
потоки. Например, connection pool для бд, почтового сервера.
Что кэшировать не нужно?
Данные, запрос которых маловероятен;
Часто редактируемые (обновляемые) данные.
Слайд 10Кэширование. Виды
Локальный кэш.
Плюсы:
Простота
Скорость
Надежность.
Слайд 11Кэширование. Виды
Локальный кэш.
Плюсы:
Простота
Скорость
Надежность.
Минусы:
Невозможность масштабирования
Нагрузка на память. Вызов сборщика мусора.
Слайд 12Кэширование. Виды
Внешний кэш.
Плюсы:
Масштабирование.
Слайд 13Кэширование. Виды
Внешний кэш.
Плюсы:
Масштабирование.
Минусы:
Накладные расходы на сетевое взаимодействие и сериализацию.
* Расходы на
сериализацию решаются выбором подходящего сериализатора.
Слайд 15Кэширование. Инвалидация
Инвалидация кэша:
Сбрасывать по ключу
Слайд 16Кэширование. Инвалидация
Инвалидация кэша:
Сбрасывать по ключу
Сбрасывать весь кэш
Слайд 17Кэширование. Инвалидация
Инвалидация кэша:
Сбрасывать по ключу
Сбрасывать весь кэш
Кэшировать на время
Слайд 18Кэширование. Инвалидация
Инвалидация кэша:
Сбрасывать по ключу
Сбрасывать весь кэш
Кэшировать на время
Неинвалидировать )
Слайд 19Кэширование. Оценка эффективности
Эффективность кэширования:
Производительность
Слайд 20Кэширование. Оценка эффективности
Эффективность кэширования:
Производительность
Количество попаданий\промахов
Слайд 22Кэширование. Типичные ошибки
Типичные ошибки:
Кэш как база данных
Слайд 23Кэширование. Типичные ошибки
Типичные ошибки:
Кэш как база данных
Кэш как прикрытие неоптимальности работы системы
Слайд 24Кэширование. Выводы
Нельзя просто так взять и применить кэш. Нужно:
Помнить, что кэш -
не БД
Помнить, что кэш не спрячет костыли
Выбрать что кэшировать
Выбрать вид кэша - локальный или внешний
Выбрать способ\способы инвалидации кэша
Всегда и еще раз всегда мониторить работу с кэшем. Производить оценку