Đo điểm chuẩn là một doanh nghiệp trơn trượt. Đó là hard to get it right và easy to fake. Trừ khi ứng dụng của bạn sẽ siết chặt mọi chu kỳ CPU ra khỏi kim loại, bạn không nên lo lắng về hiệu suất: cả Ehcache và bộ nhớ đệm ổi đều đủ tốt cho một dự án trung bình.
Những điều bạn nên chú ý là API và các tính năng. Ví dụ, bộ nhớ đệm Guava không thể được sử dụng như bộ nhớ đệm Hibernate cấp 2 (có nghĩa là, ít nhất là ra khỏi hộp). OTOH Ehcache đã phát triển một chút chất béo về API và tính năng leo nhưng những điều này là chủ quan.
Trở về chủ đề, ổi bộ nhớ cache ban đầu được kéo từ một dự án riêng biệt, concurrentlinkedhashmap đó, tôi tin rằng,
không còn được hỗ trợ như vậy
chỉ là một dự án một người đàn ông và bị mất một chút đà (xem bình luận bên dưới bài đăng này). Tuy nhiên, trang dự án cũ vẫn có một số điểm chuẩn chứng minh hiệu suất ConcurrentHashMap
(hiện tại là bộ nhớ đệm ổi) gần với ConcurrentLinkedHashMap
. Tôi hy vọng nó không xấu đi.
Tôi vẫn hỗ trợ CLHM, nhưng đó là dự án một người. CLHM có nền tảng thuật toán tốt hơn và người dùng nặng, nhưng Guava tốt hơn cho trường hợp phổ biến do nhiều tính năng hơn và một nhóm chuyên dụng. Hiệu suất hơi kém hơn so với phiên bản v1 do hỗ trợ LRU nghiêm ngặt để làm hài lòng các bài kiểm tra đơn vị di chuyển (khiếu nại không nghiêm ngặt là lỗi), trong khi bộ nhớ Cache của Guava là không nghiêm ngặt nhưng đáng tin cậy do có thương hiệu Google. Lần trước tôi chuẩn bị CLHM nhanh hơn Guava, mặc dù bị phạt. Tất cả đều là lựa chọn tuyệt vời. –
Ổi đã có trong dự án của tôi, vì vậy tôi sẽ chỉ sử dụng hỗ trợ bộ nhớ đệm của nó. Nếu nhu cầu thiết yếu của dự án sẽ tăng lên, tôi sẽ xem xét các libs khác. – Raul
Để tham khảo trong tương lai, hãy xem [tiêu chuẩn JMH] (https://github.com/ben-manes/caffeine/wiki/Benchmarks) để so sánh. –