Подтвердить что ты не робот

Что означает, что ConcurrentLinkedHashMap интегрирован в Guava?

Мы используем ConcurrentLinkedHashMap из https://code.google.com/p/concurrentlinkedhashmap/ в проекте, и я увидел примечание о том, что он был интегрирован в Guava MapMaker и CacheBuilder еще в 2010 году. Информация очень короткая:

Интеграция алгоритмических методов в MapMaker будет выпущена в Google Guava r08 и в значительной степени основана на этой версии.

Что это значит?

  • Проект concurrentlinkedhashmap, похоже, все еще активен.
  • Было ли это одноразовой интеграцией для загрузки пакета кэша Guava?
  • Разве оба проекта эволюционировали независимо с 2010 года?
  • Если да, то каковы основные различия между ними сегодня?
4b9b3361

Ответ 1

Что это значит?

Гуава - это долгосрочная замена, и большую часть времени вы должны ее использовать. История состоит в том, что ConcurrentLinkedHashMap вычислил алгоритмы, Guava включил его, а затем сосредоточился на добавлении функций.

Проект concurrentlinkedhashmap, по-видимому, все еще активен.

Это всегда был проект выходных дней, поэтому активный означает, что у меня есть царапины на зуд или ответ на запрос на изменение. Также легче экспериментировать с CLHM, чем с Guava, поэтому я, как правило, доказывал идеи там, прежде чем переносить их. Моя причастность к Гуаве была на 20% больше.

Было ли это одноразовой интеграцией для загрузки пакета кэша Guava?

Да. Сначала мы обновили MapMaker, а затем разделили кеширование на выделенный API. Это односторонняя миграция идей и улучшений в Гуаву.

Разве два проекта эволюционировали независимо с 2010 года?

Оба остались в своих целях. Мотивация ConcurrentLinkedHashMap заключалась в том, чтобы выяснить, как писать подлинный параллельный кеш без быстрых клавиш. Целью Guava является предоставление библиотеки с богатой функциональностью с красивым API и надежной реализацией для широкого использования.

Каковы основные отличия между ними сегодня?

Guava упакован функциями и имеет полную команду в Google, поддерживающую его. Используйте его!

ConcurrentLinkedHashMap имеет более высокий абсолютный concurrency путем украшения вместо forking, ConcurrentHashMap. Это позволяет использовать его с ConcurrentHashMapV8, который основан на новом алгоритме. CLHM не полагается на блокировки сегментов, что повышает производительность записи и позволяет поддерживать одну цепочку LRU. У меня есть экспериментальная ветвь с политикой LIRS, которую я надеюсь когда-нибудь закончить.

В долгосрочной перспективе надеется, что Дуг Ли однажды напишет тайник, вдохновленный нашей работой, и научит нас нескольким вещам в этом процессе.


Обновление (3/15): Caffeine - это перехват Java 8 для кэша Guava. Он пытается обеспечить лучшее из ConcurrentLinkedHashMap и Guava, модернизированное с помощью Java 8, и использовать методы, которые я изучил с тех предыдущих проектов.