Skip to content

Instantly share code, notes, and snippets.

@jweinst1
Created March 11, 2025 23:06
Show Gist options
  • Save jweinst1/f5d84c13232f31f6facaef91e597a55d to your computer and use it in GitHub Desktop.
Save jweinst1/f5d84c13232f31f6facaef91e597a55d to your computer and use it in GitHub Desktop.
hash map rust bench
use std::collections::HashMap;
fn add_rand_strings(keys:&mut Vec<String>, amnt:usize, l:usize) {
const CHARSET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
let mut rnd = 548324;
for i in 0..amnt {
let mut s = String::new();
for j in 0..l {
rnd = i ^ rnd + j * 5;
s.push(CHARSET[rnd % CHARSET.len()] as char);
}
keys.push(s);
}
}
fn my_function_to_measure(keys:Vec<String>, to_insert:&mut HashMap<String, String>) {
for key in keys {
to_insert.insert(key, "foobar".to_string());
}
}
fn main() {
use std::time::Instant;
let now = Instant::now();
let mut my_vec = Vec::new();
let mut my_map = HashMap::new();
add_rand_strings(&mut my_vec, 400000, 20);
// Code block to measure.
{
my_function_to_measure(my_vec, &mut my_map);
}
let elapsed = now.elapsed();
println!("Elapsed: {:.2?}", elapsed);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment