Comments (4)
Hi Nitsan,
It would be nice to bounce ideas, but I think the projects have different intents. I've read your blog and more recently used JCTools comparatively to check for performance lapses in my algorithms. I may have misread your project's goals, as I took the lack of documentation and minimal test suite as indicating it is a library for experimenting and demonstrating ideas.
This project is an outgrowth of my previous caching libraries (Guava, CLHM). The broadening to include collections is generalizing algorithms that I had explored for cache internals. For example 3.5yrs ago I wrote the original version of SingleConsumerQueue
when exploring ways to improve write performance and talking with @plokhotnyuk who was trying to improve Akka's mailbox implementation. I wrote the EliminationStack
as a favor to @jbellis, who wanted alternative ideas for solving a Cassandra performance bug. Internally the cache uses a ring buffer with an adaption of Striped64
resizing, and I haven't decided if any of that should be made reusable.
My experience working on Guava taught me to be very API conservative. I think JCTools will have a broader bag of data structures to choose from, whereas Caffeine will focus more on maximizing the power-to-weight ratio. Caffeine will be much more narrow like how Guava originally was, perhaps not venturing very far from its caching roots.
I see our two projects as very different, but a great opportunity explore ideas together.
from caffeine.
Q: "I'd be interested in hearing your feedback"
A: "I took the lack of documentation and minimal test suite as indicating it is a library for experimenting and demonstrating ideas."
Thanks!
The test suite is indeed minimal, but covers most of the relevant API and I'm happy to say I've had no complaints on the released version (the state of the master branch is at times experimental).
The documentation is lacking in places, but the many of the classes have a good javadoc I think. In any case, I'm always happy to fix shortcomings as they are pointed out to me, so please file issues where you see fit. The main data structure JCTools makes available at the moment is Queue and that is a well understood API.
I'm aware to date of a few big projects using JCTools(or parts thereof) in production. So... it's not a demo project, and it has some happy users. But it is young and far from perfect.
I realize your main focus is on caching, which is why I think we can assist each other on the concurrent data structures part. I would be interested to hear what it would take for you to consider using JCTools where it meets your needs and maybe contributing remaining parts for the benefit of all.
from caffeine.
happy to take this chat off-github, Skype: nitsanw.work
from caffeine.
Great, also feel free to email me: [email protected]
. I'm in the bay area and haven't been able to sleep the last few nights (~4:30am), so I won't skype you tonight as I head to bed.
In short, I would use JCTools in an application but prefer minimizing dependencies in any library that I publish. So I'd probably borrow ideas from JCTools and embed them internally, at least for this project.
from caffeine.
Related Issues (20)
- computeIfAbsent on BoundedLocalCache overwrites existing keys HOT 12
- Nested ".get()" method calls HOT 2
- Performance: Caffeine vs ConcurrentHashMap HOT 1
- [SOLVED] Library built with 3.1.6 does not run with 3.1.8 HOT 1
- explanation on hitcount HOT 6
- Help for running the test suite HOT 12
- How to refresh asynchronous cache? HOT 3
- How to Implement Batch Loading and Ensure Deduplication of Remote Loads in Caffeine HOT 1
- add support for native image - GRAALVM HOT 1
- Performance issues of Caffeine with time based expiration (vs Guava) HOT 6
- Remote cache support HOT 1
- Clarify documentation of expireAfterUpdate in Expiry HOT 1
- JCache - Cache.asMap usage HOT 3
- Property "hibernate.javax.cache.uri" is ignored in JakartaEE deployments HOT 5
- com.github.benmanes.caffeine.cache.SSLSMWA consuming very high memory. HOT 7
- Eviction function does not performed HOT 4
- java.lang.ClassCastException: java.lang.Object cannot be cast to cn.hutool.core.lang.Pair HOT 1
- Adding expiration dates different from #expireAfterWrite; saving memory (in developer situations) HOT 2
- Unnecessary fetches when using asynchronous bulk load HOT 4
- Add a `notificationExecutor`? HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from caffeine.