Считается ли реализация кеша сложной проблемой? - PullRequest
2 голосов
/ 15 июня 2009

Здесь много вопросов о кешировании, которое не работает должным образом, или о том, как правильно реализовать кеширование, для всевозможных вещей, от HTTP до SQL-запросов, кеширования памяти L1 / L2 и т. Д.

Является ли это вообще трудной проблемой с точки зрения компьютерных наук?

Ответы [ 6 ]

4 голосов
/ 15 июня 2009

«В компьютерных науках есть только две сложные вещи: аннулирование кэша и присвоение имен». - Фил Карлтон

2 голосов
/ 15 июня 2009

Я не знаю, действительно ли реализация кеша считается сложной задачей, но я подозреваю, что большинство людей, которые на самом деле не проверяют их достаточно хорошо, чтобы быть уверенными, что это будет работать, и что кеш на самом деле делает работу, которую он должен сделать. Суть реализации кеша заключается в том, что если вы ошибетесь, если вы не будете следить за отсутствием кеша и сравнивать производительность, вы даже не узнаете об этом, так как сбой кеша просто «немой» до резервного хранилища. Так что, если кэш имеет 100% -ную частоту промахов, он все равно только замедляет случай по умолчанию на 1%.

1 голос
/ 23 октября 2009

Я думаю, что независимо от задачи, если есть потребность в параллельном доступе к тому, что сложно, это просто: контроль параллельного доступа. Именно это может вызвать серьезные проблемы, такие как взаимоблокировка, сериализация в доступе, ограничения на параллелизм, среди прочего.

1 голос
/ 23 октября 2009

Пока не попробуешь в нетривиальном случае.

1 голос
/ 15 июня 2009

Я думаю, что трудность, с которой сталкиваются многие программисты, заключается в том, чтобы удерживать себя от написания программ для кеширования для своих приложений. Приятно помнить, что современные операционные системы уже много раз делают за вас кеширование, и что его самостоятельная реализация может быть пессимизацией.

1 голос
/ 15 июня 2009

Я думаю, что проблема в том, чтобы решить, как вы хотите, чтобы ваш кэш работал? например какие стратегии вы используете для выселения (последние использовались и т. д.). Это будет распространяться и т. Д.? Хотите оптимизировать попадания в кеш и т. Д.? Сложность основана на этих проблемах.

Простые внутрипроцессные кэши могут быть тривиальными. Как правило, мне не приходилось их реализовывать, поскольку вы можете получить готовые реализации для большинства платформ, и я не решусь изобретать колесо (я полагаю, что ваш вопрос касается сложности реализации, а не спрашивает, следует ли вам создай сам)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...