2012-12-18 10 views
12

Ich versuche zu entscheiden, welche dieser beiden in meinem Projekt zu verwenden: Guave Cache oder ehcache. Auf der Suche nach einer einfachen Caching-Lösung für Service-Level. Ich habe nach einigen Benchmarks gesucht, konnte aber keine finden.guava cache vs ehcache benchmark

Wenn Sie einen Benchmark zur Hand haben, schreiben Sie ihn hier.

Prost.

Antwort

20

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.

+11

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. –

+0

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

+3

Zukünftige Referenz finden Sie in diesen [JMH-Benchmarks] (https://github.com/ben-manes/caffeine/wiki/Benchmarks) für einen Vergleich. –