Benchmarking ist ein rutschiges Geschäft. Es ist hard to get it right und easy to fake. Wenn Ihre App nicht jeden CPU-Zyklus aus Metall herausquetscht, sollten Sie sich keine Gedanken über die Performance machen: Sowohl Ehcache als auch Guava-Cache sind gut genug für ein durchschnittliches Projekt.
Dinge, die Sie sollten Aufmerksamkeit schenken sind API und Funktionen. Zum Beispiel kann der Guava-Cache nicht als Ruhezustands-Cache der zweiten Ebene verwendet werden (das heißt, zumindest nicht standardmäßig). OTOH Ehcache ist ein bisschen fett in Bezug auf API und schleichend geworden, aber diese Dinge sind subjektiv.
zum Thema zurückzukommen, wurde Guava Cache ursprünglich aus einem separaten Projekt gezogen, concurrentlinkedhashmap, die, glaube ich, ist
nicht als solche
mehr unterstützt ist nur ein Projekt Ein-Mann und ein wenig an Schwung verloren (siehe Kommentar unter diesem Post). Dennoch hat die alte Projektseite immer noch einige Benchmarks, die belegen, dass die ConcurrentHashMap
(jetzt Guava Cache) Leistung nahe bei ConcurrentLinkedHashMap
liegt. Ich hoffe, es hat sich nicht verschlechtert.
Ich unterstütze immer noch CLHM, aber es ist ein Ein-Mann-Projekt. CLHM hat eine bessere algorithmische Grundlage und starke Benutzer, aber Guava ist besser für den häufigen Fall wegen mehr Funktionen und einem engagierten Team. Die Leistung ist etwas schlechter nach Version 1, da sie striktes LRU unterstützt, um Einheitentests für Migrationen zu beschwichtigen (Beschwerden, die nicht strikt waren, war ein Bug), während Guavas Cache nicht strikt ist, aber aufgrund der Google-Marke vertrauenswürdig ist. Das letzte Mal, dass ich einen CLHM-Benchmark gemacht habe, war trotz dieser Strafe kaum schneller als Guava. Alle sind ausgezeichnete Wahlen. –
Guava ist bereits in meinem Projekt vorhanden, also verwende ich es nur als Caching-Unterstützung. Wenn die Notwendigkeiten des Projekts wachsen werden, werde ich dann andere Bibliotheken in Betracht ziehen. – Raul
Zukünftige Referenz finden Sie in diesen [JMH-Benchmarks] (https://github.com/ben-manes/caffeine/wiki/Benchmarks) für einen Vergleich. –