Слайд 2Введение. Вычисление числа Фибоначчи
Классический код
public final class Fibonacci {
public static
![Введение. Вычисление числа Фибоначчи Классический код public final class Fibonacci { public](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-1.jpg)
long calc(long n) {
if (n < 2) {
return n;
} else {
return calc(n - 1) + calc(n - 2);
}
}
}
Слайд 3Введение. Вычисление числа Фибоначчи
* Измерялось на машине Intel® Core™ i7-6700HQ CPU @
![Введение. Вычисление числа Фибоначчи * Измерялось на машине Intel® Core™ i7-6700HQ CPU @ 2.60GHz × 8](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-2.jpg)
2.60GHz × 8
Слайд 4Введение. Вычисление числа Фибоначчи
![Введение. Вычисление числа Фибоначчи](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-3.jpg)
Слайд 5Введение. Вычисление числа Фибоначчи
Оптимизированный код
public final class Fibonacci {
public static long
![Введение. Вычисление числа Фибоначчи Оптимизированный код public final class Fibonacci { public](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-4.jpg)
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 @
![Введение. Вычисление числа Фибоначчи * Измерялось на машине Intel® Core™ i7-6700HQ CPU @ 2.60GHz × 8](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-5.jpg)
2.60GHz × 8
Слайд 7Кэширование. Определение
Кэширование - обмен скорости на память
![Кэширование. Определение Кэширование - обмен скорости на память](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-6.jpg)
Слайд 8Кэширование. Что стоит кэшировать
Что кэшировать?
Результаты вычислений часто повторяющихся запросов;
Соединения, потоки. Например, connection
![Кэширование. Что стоит кэшировать Что кэшировать? Результаты вычислений часто повторяющихся запросов; Соединения,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-7.jpg)
pool для бд, почтового сервера.
Слайд 9Кэширование. Что стоит кэшировать. Что не надо
Что кэшировать?
Результаты вычислений часто повторяющихся запросов;
Соединения,
![Кэширование. Что стоит кэшировать. Что не надо Что кэшировать? Результаты вычислений часто](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-8.jpg)
потоки. Например, connection pool для бд, почтового сервера.
Что кэшировать не нужно?
Данные, запрос которых маловероятен;
Часто редактируемые (обновляемые) данные.
Слайд 10Кэширование. Виды
Локальный кэш.
Плюсы:
Простота
Скорость
Надежность.
![Кэширование. Виды Локальный кэш. Плюсы: Простота Скорость Надежность.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-9.jpg)
Слайд 11Кэширование. Виды
Локальный кэш.
Плюсы:
Простота
Скорость
Надежность.
Минусы:
Невозможность масштабирования
Нагрузка на память. Вызов сборщика мусора.
![Кэширование. Виды Локальный кэш. Плюсы: Простота Скорость Надежность. Минусы: Невозможность масштабирования Нагрузка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-10.jpg)
Слайд 12Кэширование. Виды
Внешний кэш.
Плюсы:
Масштабирование.
![Кэширование. Виды Внешний кэш. Плюсы: Масштабирование.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-11.jpg)
Слайд 13Кэширование. Виды
Внешний кэш.
Плюсы:
Масштабирование.
Минусы:
Накладные расходы на сетевое взаимодействие и сериализацию.
* Расходы на
![Кэширование. Виды Внешний кэш. Плюсы: Масштабирование. Минусы: Накладные расходы на сетевое взаимодействие](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-12.jpg)
сериализацию решаются выбором подходящего сериализатора.
Слайд 15Кэширование. Инвалидация
Инвалидация кэша:
Сбрасывать по ключу
![Кэширование. Инвалидация Инвалидация кэша: Сбрасывать по ключу](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-14.jpg)
Слайд 16Кэширование. Инвалидация
Инвалидация кэша:
Сбрасывать по ключу
Сбрасывать весь кэш
![Кэширование. Инвалидация Инвалидация кэша: Сбрасывать по ключу Сбрасывать весь кэш](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-15.jpg)
Слайд 17Кэширование. Инвалидация
Инвалидация кэша:
Сбрасывать по ключу
Сбрасывать весь кэш
Кэшировать на время
![Кэширование. Инвалидация Инвалидация кэша: Сбрасывать по ключу Сбрасывать весь кэш Кэшировать на время](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-16.jpg)
Слайд 18Кэширование. Инвалидация
Инвалидация кэша:
Сбрасывать по ключу
Сбрасывать весь кэш
Кэшировать на время
Неинвалидировать )
![Кэширование. Инвалидация Инвалидация кэша: Сбрасывать по ключу Сбрасывать весь кэш Кэшировать на время Неинвалидировать )](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-17.jpg)
Слайд 19Кэширование. Оценка эффективности
Эффективность кэширования:
Производительность
![Кэширование. Оценка эффективности Эффективность кэширования: Производительность](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-18.jpg)
Слайд 20Кэширование. Оценка эффективности
Эффективность кэширования:
Производительность
Количество попаданий\промахов
![Кэширование. Оценка эффективности Эффективность кэширования: Производительность Количество попаданий\промахов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-19.jpg)
Слайд 22Кэширование. Типичные ошибки
Типичные ошибки:
Кэш как база данных
![Кэширование. Типичные ошибки Типичные ошибки: Кэш как база данных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-21.jpg)
Слайд 23Кэширование. Типичные ошибки
Типичные ошибки:
Кэш как база данных
Кэш как прикрытие неоптимальности работы системы
![Кэширование. Типичные ошибки Типичные ошибки: Кэш как база данных Кэш как прикрытие неоптимальности работы системы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-22.jpg)
Слайд 24Кэширование. Выводы
Нельзя просто так взять и применить кэш. Нужно:
Помнить, что кэш -
![Кэширование. Выводы Нельзя просто так взять и применить кэш. Нужно: Помнить, что](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1172863/slide-23.jpg)
не БД
Помнить, что кэш не спрячет костыли
Выбрать что кэшировать
Выбрать вид кэша - локальный или внешний
Выбрать способ\способы инвалидации кэша
Всегда и еще раз всегда мониторить работу с кэшем. Производить оценку