From 8bf57fc3a5f623cde003eb4f7458bf810fdcc0db Mon Sep 17 00:00:00 2001 From: Lorenzo Cimini Date: Fri, 8 Mar 2024 15:30:46 +0100 Subject: [PATCH] random and iter tests with 10 reps --- script.py | 16 +++++++++++----- src/bin/random_access_bvtest.rs | 26 ++++++++++++++------------ src/bin/seq_access_bvtest.rs | 17 ++++++++--------- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/script.py b/script.py index 9e0a0a1..6c7f818 100644 --- a/script.py +++ b/script.py @@ -17,12 +17,16 @@ webgraph_rs_dir = sys.argv[3] # Check all needed directories are present before actually starting the script. -if not os.path.isdir(graphs_dir) or not os.path.isdir(compressed_graphs_dir): - print(f"{graphs_dir} doesn't exist. Usage is: \n ") +if not os.path.isdir(graphs_dir): + print(f"{graphs_dir} it not a directory.\nUsage is: python script.py ") exit(1) if not os.path.isdir(webgraph_rs_dir): - print(f"{webgraph_rs_dir} Usage is: \n ") + print(f"{webgraph_rs_dir} is not a directory.\nUsage is: python script.py ") + exit(1) + +if not os.path.isdir(compressed_graphs_dir): + print(f"{compressed_graphs_dir} is not a directory.\nUsage is: python script.py ") exit(1) # Check all needed files are present before actually starting the script. @@ -101,7 +105,8 @@ f"{compressed_graphs_dir}{graph}-hc", ], stdout=subprocess.PIPE)) - sequential_access_speed.append(float(sequential_speed.stdout.decode('utf-8'))) + sequential_speed = sorted([float(speed) for speed in sequential_speed.stdout.decode('utf-8').split("\n") if speed != '']) + sequential_access_speed.append(sequential_speed[len(sequential_speed) // 2]) # The random speed test is performed by running random_access_bvtest on the compressed graph. print(f"Starting random speed test of {graph}") @@ -110,7 +115,8 @@ f"{compressed_graphs_dir}{graph}", ], stdout=subprocess.PIPE)) - random_access_speed.append(float(random_speed.stdout.decode('utf-8'))) + random_speed = sorted([float(speed) for speed in random_speed.stdout.decode('utf-8').split("\n") if speed != '']) + random_access_speed.append(random_speed[len(random_speed) // 2]) with open('results.csv', 'w', encoding='UTF8', newline='') as f: writer = csv.writer(f) diff --git a/src/bin/random_access_bvtest.rs b/src/bin/random_access_bvtest.rs index 673e9ce..38109ac 100644 --- a/src/bin/random_access_bvtest.rs +++ b/src/bin/random_access_bvtest.rs @@ -35,18 +35,20 @@ pub fn main() -> Result<()> { .expected_updates(Some(RANDOM_TEST_SAMPLES as usize)); pl.start("Starting random-access speed test..."); - // Random-access speed test - let mut rng = SmallRng::seed_from_u64(0); - let mut c: u64 = 0; - let num_nodes = graph.num_nodes(); - let random_nodes = (0..RANDOM_TEST_SAMPLES).map(|_| rng.gen_range(0..num_nodes)); - let start = std::time::Instant::now(); - for node in random_nodes { - c += black_box(graph.successors(node).count() as u64); - pl.update(); + for _ in 0..10 { + // Random-access speed test + let mut rng = SmallRng::seed_from_u64(0); + let mut c: u64 = 0; + let num_nodes = graph.num_nodes(); + let random_nodes = (0..RANDOM_TEST_SAMPLES).map(|_| rng.gen_range(0..num_nodes)); + let start = std::time::Instant::now(); + for node in random_nodes { + c += black_box(graph.successors(node).count() as u64); + pl.update(); + } + pl.done_with_count(c as usize); + + println!("{:.2}", start.elapsed().as_nanos() / c as u128); } - pl.done_with_count(c as usize); - - println!("{:.2}", start.elapsed().as_nanos() / c as u128); Ok(()) } diff --git a/src/bin/seq_access_bvtest.rs b/src/bin/seq_access_bvtest.rs index df9118f..f170536 100644 --- a/src/bin/seq_access_bvtest.rs +++ b/src/bin/seq_access_bvtest.rs @@ -27,15 +27,14 @@ pub fn main() -> anyhow::Result<()> { .expected_updates(Some(graph.num_nodes())); pl.start("Starting sequential-access speed test..."); - let mut c: u64 = 0; - let start = std::time::Instant::now(); - let mut iter = graph.iter(); - while let Some((_, succ)) = iter.next() { - c += succ.into_iter().count() as u64; + for _ in 0..10 { + let mut c: u64 = 0; + let start = std::time::Instant::now(); + let mut iter = graph.iter(); + while let Some((_, succ)) = iter.next() { + c += succ.into_iter().count() as u64; + } + println!("{}", (start.elapsed().as_secs_f64() / c as f64) * 1e9); } - println!("{}", (start.elapsed().as_secs_f64() / c as f64) * 1e9); - - assert_eq!(c, graph.num_arcs_hint().unwrap()); - Ok(()) }