diff --git a/src/main.rs b/src/main.rs index d643d94..ab3b48c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,7 +12,7 @@ fn main() { for run in 0..4 { let mut run_times: Vec<(u128, u128, u128)> = Vec::with_capacity(200); - for i in 0..200 { + for i in 1..200 { let runs = 10000000 / (i+1); let items = (i+1)*2; let result = test_searches(&data, runs, items); @@ -36,16 +36,16 @@ fn main() { } fn test_searches(data: &[u64], runs: usize, items: usize) -> Vec { - let needle_offset = random::(); - let offset_offset = random::(); - // let offset_offset = items; + let needles: Vec = (0..runs).map(|_|random::() % items).collect(); + // let offsets: Vec = (0..runs).map(|_|random::() % (data.len() - items)).collect(); + let offsets: Vec = (0..runs).map(|i|i*items).collect(); flush_caches(); let start_time = Instant::now(); for i in 0..runs { - let offset = usize::wrapping_mul(i+1, offset_offset) % (data.len() - items); - let needle_index = usize::wrapping_mul(i+1, needle_offset) % items; + let offset = offsets[i]; + let needle_index = needles[i]; search_linear_iter(&data[offset..offset+items], data[offset+needle_index]); } let linear_iter_duration = Instant::now().duration_since(start_time); @@ -54,8 +54,8 @@ fn test_searches(data: &[u64], runs: usize, items: usize) -> Vec { let start_time = Instant::now(); for i in 0..runs { - let offset = usize::wrapping_mul(i+1, offset_offset) % (data.len() - items); - let needle_index = usize::wrapping_mul(i+1, needle_offset) % items; + let offset = offsets[i]; + let needle_index = needles[i]; search_linear_loop(&data[offset..offset+items], data[offset+needle_index]); } let linear_loop_duration = Instant::now().duration_since(start_time); @@ -64,8 +64,8 @@ fn test_searches(data: &[u64], runs: usize, items: usize) -> Vec { let start_time = Instant::now(); for i in 0..runs { - let offset = usize::wrapping_mul(i+1, offset_offset) % (data.len() - items); - let needle_index = usize::wrapping_mul(i+1, needle_offset) % items; + let offset = offsets[i]; + let needle_index = needles[i]; search_binary(&data[offset..offset+items], data[offset+needle_index]); } let binary_duration = Instant::now().duration_since(start_time); diff --git a/times.plt b/times.plt index 481c753..153b0cc 100644 --- a/times.plt +++ b/times.plt @@ -5,9 +5,9 @@ set yrange [1:3000] set grid set terminal pngcairo size 1024, 1024 -set output "times_d8.png" +set output "times_e2.png" -plot "