From c92d9d99a2f58e621f683929679fc2f9d207bc46 Mon Sep 17 00:00:00 2001 From: mehbark Date: Thu, 16 Apr 2026 14:07:32 -0400 Subject: [PATCH] don't allocate ngrams on the heap (lol) --- src/main.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index b553187..bbe25ff 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,7 +8,7 @@ fn main() { let mut src = Vec::new(); io::stdin().read_to_end(&mut src).unwrap(); - let mut table: HashMap, u64> = HashMap::new(); + let mut table: HashMap<&[u8], u64> = HashMap::new(); for n in 1..=20 { let (ngrams, freqs) = ngram_freqs(n, &src, &mut table); let bits = entropy(freqs); @@ -19,17 +19,17 @@ fn main() { } } -fn ngram_freqs( +fn ngram_freqs<'a>( n: usize, - src: &[u8], - counts: &mut HashMap, u64>, + src: &'a [u8], + counts: &mut HashMap<&'a [u8], u64>, ) -> (usize, impl Iterator) { assert!(n > 0); counts.clear(); for ngram in src.windows(n) { - *counts.entry(Box::from(ngram)).or_default() += 1; + *counts.entry(ngram).or_default() += 1; } let total_count: u64 = counts.values().sum();