collection.immutable.Map [K, SoftReference [V]] поверх Google MapMaker? - PullRequest
0 голосов
/ 12 апреля 2011

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

collection.immutable.Map.empty[ K, SoftReference[ V ]]
new com.google.common.collect.MapMaker.softValues.makeMap[ K, V ]

над другим? Карта будет сохранена в ссылке на STM, поэтому неизменяемой будет просто и хорошо. Кроме того, K, скорее всего, будет Long, поэтому я мог бы использовать collection.immutable.LongMap.

В чем преимущество использования коллекций Google здесь? Производительность и пространство?

1 Ответ

0 голосов
/ 13 апреля 2011

IMO Основным преимуществом подхода Google является то, что в результате API становится чище, т. Е. SoftReference вставляются и проверяются нулем для вас, а не для того, чтобы вам управлять ими. Но гарантированная неизменность и родной Scala API отмечены в другом столбце.

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

...