Кэширование
Введение. Вычисление числа Фибоначчи
Введение. Вычисление числа Фибоначчи
Введение. Вычисление числа Фибоначчи
Введение. Вычисление числа Фибоначчи
Введение. Вычисление числа Фибоначчи
Кэширование. Определение
Кэширование. Что стоит кэшировать
Кэширование. Что стоит кэшировать. Что не надо
Кэширование. Виды
Кэширование. Виды
Кэширование. Виды
Кэширование. Виды
Кэширование. Инвалидация
Кэширование. Инвалидация
Кэширование. Инвалидация
Кэширование. Инвалидация
Кэширование. Инвалидация
Кэширование. Оценка эффективности
Кэширование. Оценка эффективности
Кэширование. Типичные ошибки
Кэширование. Типичные ошибки
Кэширование. Типичные ошибки
Кэширование. Выводы
Спасибо за внимание!
1.27M
Category: informaticsinformatics

Кэширование. Введение. Вычисление числа Фибоначчи

1. Кэширование

Денис Еремеев
разработчик

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. Введение. Вычисление числа Фибоначчи

Индекс числа Фибоначчи
Время вычисления, сек
0
0,001
5
0,004
10
0,005
20
0,008
40
0,554
50
49,315
51
78,631
* Измерялось на машине 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. Введение. Вычисление числа Фибоначчи

Индекс числа Фибоначчи
Время вычисления, сек
0
0,001
5
0,004
10
0,005
20
0,008
40
0,008
50
0,009
51
0,009
* Измерялось на машине Intel® Core™ i7-6700HQ CPU @ 2.60GHz × 8

7. Кэширование. Определение

Кэширование - обмен скорости на память

8. Кэширование. Что стоит кэшировать

Что кэшировать?
Результаты вычислений часто повторяющихся запросов;
Соединения, потоки. Например, connection pool для бд, почтового сервера.

9. Кэширование. Что стоит кэшировать. Что не надо

Что кэшировать?
Результаты вычислений часто повторяющихся запросов;
Соединения, потоки. Например, connection pool для бд, почтового сервера.
Что кэшировать не нужно?
Данные, запрос которых маловероятен;
Часто редактируемые (обновляемые) данные.

10. Кэширование. Виды

Локальный кэш.
Плюсы:
Простота
Скорость
Надежность.

11. Кэширование. Виды

Локальный кэш.
Плюсы:
Простота
Скорость
Надежность.
Минусы:
Невозможность масштабирования
Нагрузка на память. Вызов сборщика мусора.

12. Кэширование. Виды

Внешний кэш.
Плюсы:
Масштабирование.

13. Кэширование. Виды

Внешний кэш.
Плюсы:
Масштабирование.
Минусы:
Накладные расходы на сетевое взаимодействие и сериализацию.
* Расходы на сериализацию решаются выбором подходящего сериализатора.

14. Кэширование. Инвалидация

15. Кэширование. Инвалидация

Инвалидация кэша:
Сбрасывать по ключу

16. Кэширование. Инвалидация

Инвалидация кэша:
Сбрасывать по ключу
Сбрасывать весь кэш

17. Кэширование. Инвалидация

Инвалидация кэша:
Сбрасывать по ключу
Сбрасывать весь кэш
Кэшировать на время

18. Кэширование. Инвалидация

Инвалидация кэша:
Сбрасывать по ключу
Сбрасывать весь кэш
Кэшировать на время
Неинвалидировать )

19. Кэширование. Оценка эффективности

Эффективность кэширования:
Производительность

20. Кэширование. Оценка эффективности

Эффективность кэширования:
Производительность
Количество попаданий\промахов

21. Кэширование. Типичные ошибки

22. Кэширование. Типичные ошибки

Типичные ошибки:
Кэш как база данных

23. Кэширование. Типичные ошибки

Типичные ошибки:
Кэш как база данных
Кэш как прикрытие неоптимальности работы системы

24. Кэширование. Выводы

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

25. Спасибо за внимание!

Требуйте носки Demix
в кассах магазинов Спортмастер
English     Русский Rules