2012-12-18 22 views
12

Sto cercando di decidere quale di questi due utilizzare nel mio progetto: cache guava o ehcache. Alla ricerca di una soluzione di caching a livello di servizio leggera. Ho cercato alcuni benchmark, ma non sono riuscito a trovarne.benchmark guava cache vs ehcache

Se si dispone di un benchmark a portata di mano, si prega di postarlo qui.

Cheers.

risposta

20

Il benchmarking è un'attività sfavorevole. È hard to get it right e easy to fake. A meno che la tua app non esaurisca tutti i cicli della CPU in metallo, non dovresti preoccuparti delle prestazioni: sia la cache Ehcache che quella guava sono sufficienti per un progetto medio.

Le cose che si desidera prestare attenzione sono API e funzionalità. Ad esempio, la cache Guava non può essere utilizzata come cache di ibernazione di secondo livello (ovvero, almeno per impostazione predefinita). OTOH Ehcache è cresciuto un po 'di grasso in termini di API e funzionalità strisciante, ma queste cose sono soggettive.

Tornando in tema, la cache Guava è stato originariamente tirato da un progetto separato, concurrentlinkedhashmap che, credo, non è più supportato come tale è solo un progetto one-man e ha perso un po 'di slancio (si veda il commento sotto questo post). Tuttavia, la vecchia pagina del progetto presenta ancora alcuni benchmark che dimostrano che le prestazioni di ConcurrentHashMap (ora guava cache) sono prossime allo ConcurrentLinkedHashMap. Spero che non si sia deteriorato.

+11

Continuo a supportare CLHM, ma è un progetto one-man. CLHM ha una base algoritmica migliore e utenti pesanti, ma Guava è migliore per il caso comune a causa di più funzioni e un team dedicato. Le prestazioni sono leggermente peggiorate dopo la v1 a causa del supporto della rigida LRU per placare i test unitari per le migrazioni (i reclami relativi a un bug non severo), mentre Guava's Cache non è severa, ma attendibile per il marchio Google. L'ultima volta che ho fatto un benchmark con CLHM è stato appena più veloce di Guava, nonostante questa penalità. Tutte sono scelte eccellenti. –

+0

Guava è già presente nel mio progetto, quindi userò semplicemente il supporto per il caching. Se le necessità del progetto cresceranno, prenderò in considerazione altre librerie. – Raul

+3

Per riferimento futuro, consultare questi [benchmark JMH] (https://github.com/ben-manes/caffeine/wiki/Benchmarks) per un confronto. –