tisonkun opened a new pull request, #314: URL: https://github.com/apache/datasketches-rust/pull/314
Add `ddsketch::DdSketch` behind the `ddsketch` feature for mergeable numeric quantiles with relative value accuracy, useful for heavy-tailed latency distributions. The implementation follows the [DDSketch paper](https://www.vldb.org/pvldb/vol12/p2195-masson.pdf), with [Datadog's implementation](https://github.com/DataDog/sketches-go/tree/228b76a8e69df016726ce47579da54cffb0d0779/ddsketch) and the [C++ proposal](https://github.com/apache/datasketches-cpp/pull/466) as references. Fixed logarithmic buckets use bounded dense stores for positive and negative values. The default collapses the smallest numerical values to preserve high-quantile accuracy; callers can select highest-value collapse instead. `quantile_is_collapsed` identifies estimates that have lost the configured accuracy. The API includes integer weighted updates, compatible merging, exact extrema, allocation reuse, and lower discrete quantiles without losing rank precision above `2^53`. Subnormal values share the zero bucket and have an absolute error bound. Serialization uses a versioned Rust-specific format and preserves collapse state; it does not claim Datadog or TCK wire compatibility. Documentation, a distributed latency example, behavior and malformed-image tests, and update/merge/query/serialization benchmarks are included. Validation: - `cargo x check`, `cargo x test`, and `cargo x lint`. - DDSketch behavior and serialization tests on Rust `1.86.0`. - `ddsketch_latency` example. - DDSketch Divan benchmarks with `--sample-count 20 --min-time 0.05 --max-time 0.2`. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
