12

プロジェクトでhttps://code.google.com/p/concurrentlinkedhashmap/のConcurrentLinkedHashMapを使用しており、2010年にGuavaのMapMakerとCacheBuilderに統合されたというメモを見ました。情報は非常に簡単です。

アルゴリズム技術のMapMakerへの統合は、Google Guava r08でリリースされ、このバージョンに大きく基づいています。

正確にはどういう意味ですか?

  • コンカレントリンクハッシュマッププロジェクトはまだアクティブなようです。
  • Guavaキャッシュパッケージをブートストラップするのは1回限りの統合でしたか?
  • 2010年以降、2つのプロジェクトは独立して進化しましたか?
  • もしそうなら、今日のそれらの主な違いは何ですか?
4

1 に答える 1

37

正確にはどういう意味ですか?

グアバは長期的な代替品であり、ほとんどの場合、グアバを使用する必要があります。歴史は、ConcurrentLinkedHashMapがアルゴリズムを理解し、Guavaがそれを包含し、機能の追加に焦点を合わせたことです。

コンカレントリンクハッシュマッププロジェクトはまだアクティブなようです。

それはいつも週末のプロジェクトだったので、アクティブとは、かゆみを感じたり、変更要求に応答したりすることを意味します。また、グアバよりもCLHMで実験する方が簡単なので、移植する前にそこでアイデアを証明する傾向がありました。私のグアバとの関わりは20%でした。

Guavaキャッシュパッケージをブートストラップするのは1回限りの統合でしたか?

はい。最初にMapMakerをオーバーホールし、次にキャッシュを専用のAPIに分割しました。これは、アイデアと改善点をグアバに一方向に移行することです。

2010年以降、2つのプロジェクトは独立して進化しましたか?

どちらも彼らの目標に専念し続けています。ConcurrentLinkedHashMapの背後にある動機は、ショートカットを使用せずに真の並行キャッシュを作成する方法を理解することでした。Guavaの背後にある目標は、幅広い用途に対応する美しいAPIと確実な実装を備えた機能豊富なライブラリを提供することです。

今日のそれらの主な違いは何ですか?

Guavaには機能が満載されており、Googleのフルタイムチームがそれをサポートしています。これを使って!

ConcurrentLinkedHashMapは、フォークする代わりにConcurrentHashMapを装飾することにより、絶対同時実行性が高くなります。これにより、新しいアルゴリズムに基づくConcurrentHashMapV8で使用できるようになります。CLHMはセグメントロックに依存しません。これにより、書き込みパフォーマンスが向上し、単一のLRUチェーンを維持できます。LIRSポリシーを使用した実験的なブランチがあり、いつか終了したいと思っています。

長期的な希望は、Doug Leaがいつか私たちの仕事に触発されたキャッシュを作成し、その過程でいくつかのことを教えてくれることです。


アップデート(3/15):カフェインはGuavaのキャッシュをJava8で書き直したものです。これは、Java 8で最新化され、以前のプロジェクト以降に学んだ手法を採用した、ConcurrentLinkedHashMapとGuavaの最高のものを提供しようとします。

于 2013-03-08T23:42:43.817 に答える