Comments (2)
Thought a bit about this, seems to me that keeping the default implementation is important for ease of use. A fully generic version would be nice as well, but not very useful IMO (I could be wrong about that, keeping this discussion open).
My reasoning:
- Objects that need CardinalityEstimation-based counting tend to have IDs with convenient types - string, long etc. That means developers can use the default implementation with code which is almost as pretty as counting the objects themselves, which allowing CardinalityEstimator to keep things simple.
- In order to count objects of type T, there needs to be a consistent way to produce a (preferably 64-bit) hash code for them. The hash function must be consistent across different instances of the CardinalityEstimator for them to share state (merging), so that burden is on the developer anyway. I'd prefer the code to make that immediately obvious to the developer.
- For developers who want a fully generic version, it's not hard to wrap CardinalityEstimator with a wrapper. Most developers would have the current, simpler code to work with.
If it turns out I'm a minority opinion on this, I'll reconsider. Feel free to comment.
-Oron
from cardinalityestimation.
No one seems to have requested this, closing. Feel free to contact me if you wish to reopen.
from cardinalityestimation.
Related Issues (14)
- implement ISerializable to enable Remoting serialization in Murmur3 branch HOT 1
- Murmur hash gives different hash values for same input value HOT 6
- CardinalityEstimation is not supported on .net core HOT 6
- Make DirectCounterMaxElements configurable HOT 2
- Deserialization fails with NullReferenceException in certain cases
- Add a strong-named version
- CardinalityEstimator.Merge() Keeps Direct Counting Items No Matter How Many Exist After The Merge HOT 3
- Publish signed version of .NET Standard-compatible library HOT 2
- Provide efficient serializer
- Add Resharper settings file
- NuGet package does not contain CardinalityEstimatorSerializer class. HOT 1
- Re-estimate biases based on actual hash used
- High error for sequential sets - consider MurmurHash instead of FNV HOT 4
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 cardinalityestimation.