Слайд 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Кэширование. Выводы
Нельзя просто так взять и применить кэш. Нужно:
Помнить, что кэш -

не БД
Помнить, что кэш не спрячет костыли
Выбрать что кэшировать
Выбрать вид кэша - локальный или внешний
Выбрать способ\способы инвалидации кэша
Всегда и еще раз всегда мониторить работу с кэшем. Производить оценку