From 62157bf51be400704eafe050eef9a738028c2677 Mon Sep 17 00:00:00 2001 From: LucaCappelletti94 Date: Thu, 15 Aug 2024 17:21:41 +0200 Subject: [PATCH 1/2] Added support for mem_dbg as optional feature --- Cargo.toml | 1 + src/h2b.rs | 1 + src/h2b/sketch.rs | 3 +++ src/h3b.rs | 1 + src/h3b/sketch.rs | 4 ++++ src/hbb64.rs | 1 + src/hyper_two_bits.rs | 3 +++ src/lib.rs | 2 ++ 8 files changed, 16 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index ce6a0fd..edba5f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ name = "accuracy" [dependencies] ahash = "0.8.11" +mem_dbg = {version="0.2.4", optional=true} rand = { version = "0.8" } siphasher = { version = "1", optional = true } diff --git a/src/h2b.rs b/src/h2b.rs index 5df1988..dd4eebd 100644 --- a/src/h2b.rs +++ b/src/h2b.rs @@ -13,6 +13,7 @@ use crate::AHasherDefaultBuilder; /// /// Both the hasher and the sub stream size siaz can be customized, by default it uses `AHasherBuilder` and `M256` #[derive(Debug, Eq, PartialEq, Hash, Clone)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct HyperTwoBits { hash: HASH, sketch: SKETCH, diff --git a/src/h2b/sketch.rs b/src/h2b/sketch.rs index b5154e5..94aaaeb 100644 --- a/src/h2b/sketch.rs +++ b/src/h2b/sketch.rs @@ -29,6 +29,7 @@ pub trait Sketch: Default { /// M = 64, using two 64 bit integers to store the sketch #[derive(Debug, Eq, PartialEq, Hash, Clone, Default)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct M64 { low: u64, high: u64, @@ -99,6 +100,7 @@ impl Sketch for M64 { /// /// The implementation is similar to M64 #[derive(Debug, Eq, PartialEq, Hash, Clone, Default)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct M128 { low: u128, high: u128, @@ -170,6 +172,7 @@ struct HiLoRegister { /// This is not meant to be used directly instead it serves as /// a base for the other vectored sketches #[derive(Debug, Eq, PartialEq, Hash, Copy, Clone)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct M128Reg { registers: [HiLoRegister; REGISTERS], } diff --git a/src/h3b.rs b/src/h3b.rs index 8ee0a51..498d8ec 100644 --- a/src/h3b.rs +++ b/src/h3b.rs @@ -13,6 +13,7 @@ use crate::AHasherDefaultBuilder; /// /// Both the hasher and the sub stream size siaz can be customized, by default it uses `AHasherBuilder` and `M256` #[derive(Debug, Eq, PartialEq, Hash, Clone)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct HyperThreeBits { hash: HASH, sketch: SKETCH, diff --git a/src/h3b/sketch.rs b/src/h3b/sketch.rs index ae16fb6..2a39f68 100644 --- a/src/h3b/sketch.rs +++ b/src/h3b/sketch.rs @@ -40,6 +40,7 @@ pub trait Sketch: Default { /// M = 64, using two 64 bit integers to store the sketch #[derive(Debug, Eq, PartialEq, Hash, Copy, Clone, Default)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct M64 { high: u64, middle: u64, @@ -122,6 +123,7 @@ impl Sketch for M64 { /// /// The implementation is similar to M64 #[derive(Debug, Eq, PartialEq, Hash, Copy, Clone, Default)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct M128 { low: u128, middle: u128, @@ -193,6 +195,7 @@ impl Sketch for M128 { /// to optimize for cache locallity when compiting inside /// a vectored sketch #[derive(Default, Clone, Copy, Debug, Hash, Eq, PartialEq)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct BitRegister { high: u128, middle: u128, @@ -204,6 +207,7 @@ struct BitRegister { /// This is not meant to be used directly instead it serves as /// a base for the other vectored sketches #[derive(Debug, Eq, PartialEq, Hash, Copy, Clone)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct M128Reg { registers: [BitRegister; REGISTERS], } diff --git a/src/hbb64.rs b/src/hbb64.rs index ca9f0ec..c631d4d 100644 --- a/src/hbb64.rs +++ b/src/hbb64.rs @@ -2,6 +2,7 @@ use std::hash::Hasher; /// `HyperBitBit` cardinality counter with 64 substreams #[derive(Debug, Eq, PartialEq, Hash, Clone)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct HyperBitBit64 { _hash: std::marker::PhantomData, sketch1: u64, diff --git a/src/hyper_two_bits.rs b/src/hyper_two_bits.rs index 267b898..9c59923 100644 --- a/src/hyper_two_bits.rs +++ b/src/hyper_two_bits.rs @@ -10,6 +10,7 @@ use crate::M256; /// Random Seeded `AHasher` Builder that allows for seeded hashing per `HyperTwoBit` isnstance #[derive(Debug, Eq, PartialEq, Hash, Clone)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct AHasherBuilder { state: u64, } @@ -38,6 +39,7 @@ pub type AHasherDefaultBuilder = BuildHasherDefault; /// Random Seeded `SipHasher13` Builder #[cfg(feature = "siphash")] #[derive(Debug, Eq, PartialEq, Hash, Clone)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct SipHasher13Builder { state: u64, } @@ -68,6 +70,7 @@ pub type SipHasher13DefaultBuilder = BuildHasherDefault { hash: HASH, sketch: SKETCH, diff --git a/src/lib.rs b/src/lib.rs index b797ef9..85c037b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -31,6 +31,7 @@ pub use prelude::*; /// Random Seeded `AHasher` Builder that allows for seeded hashing per `HyperTwoBit` isnstance #[derive(Debug, Eq, PartialEq, Hash, Clone)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct AHasherBuilder { state: u64, } @@ -59,6 +60,7 @@ pub type AHasherDefaultBuilder = BuildHasherDefault; /// Random Seeded `SipHasher13` Builder #[cfg(feature = "siphash")] #[derive(Debug, Eq, PartialEq, Hash, Clone)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] pub struct SipHasher13Builder { state: u64, } From ff1c91326b16e57c904b3e73bfe0768c293f8e9b Mon Sep 17 00:00:00 2001 From: LucaCappelletti94 Date: Thu, 15 Aug 2024 18:39:09 +0200 Subject: [PATCH 2/2] Added missing mem_dbg derive --- src/h2b/sketch.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/h2b/sketch.rs b/src/h2b/sketch.rs index 94aaaeb..af040d6 100644 --- a/src/h2b/sketch.rs +++ b/src/h2b/sketch.rs @@ -162,6 +162,7 @@ impl Sketch for M128 { /// to optimize for cache locallity when compiting inside /// a vectored sketch #[derive(Default, Clone, Copy, Debug, Eq, PartialEq, Hash)] +#[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] struct HiLoRegister { high: u128, low: u128,