Skip to content

Commit

Permalink
fix: nvx-parsing test
Browse files Browse the repository at this point in the history
  • Loading branch information
lbennett-stacki committed Aug 16, 2024
1 parent 6ec4601 commit 8b2d89d
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 54 deletions.
5 changes: 3 additions & 2 deletions lang/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions lang/testing/nvx-parsing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
env_logger = "0.11.5"
log = "0.4.21"
rayon = "1.10.0"
serde_json = "1.0.116"
82 changes: 30 additions & 52 deletions lang/testing/nvx-parsing/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
use rayon::iter::IntoParallelRefIterator;
use rayon::prelude::*;
use std::{
collections::HashMap,
sync::{Arc, Mutex},
thread,
time::Duration,
};
use std::{collections::HashMap, time::Duration};

type Output = HashMap<String, String>;

Expand Down Expand Up @@ -92,60 +87,43 @@ fn generate_fixtures() {
}

fn main() {
env_logger::init();

if std::env::args().nth(1).unwrap_or_default() == "regen" {
log::info!("Regenerating fixtures");
generate_fixtures();
return;
}

let test_cases = (0..1000).collect::<Vec<_>>();

let a_avg = Arc::new(Mutex::new(None));
let a_avg_inner = a_avg.clone();
let test_cases_a = test_cases.clone();

let b_avg = Arc::new(Mutex::new(None));
let b_avg_inner = Arc::downgrade(&b_avg);
let test_cases_b = test_cases.clone();

let a = thread::spawn(move || {
let nvx = read_fixture("test.generated.nvx");
let results = test_cases_a
.par_iter()
.map(|_| test_nvx(&nvx))
.collect::<Vec<_>>();
a_avg_inner.lock().unwrap().replace(Some(
results.iter().sum::<Duration>() / results.len() as u32,
));
});

let b = thread::spawn(move || {
let json = read_fixture("test.generated.json");
let results = test_cases_b
.par_iter()
.map(|_| test_json(&json))
.collect::<Vec<_>>();
b_avg_inner.upgrade().unwrap().lock().unwrap().replace(Some(
results.iter().sum::<Duration>() / results.len() as u32,
));
});
let iterations = (0..100).collect::<Vec<_>>();

log::info!("Starting test - Running {} iterations", iterations.len());

let mut a_avg = None;

let start = std::time::Instant::now();

let a_avg_tick_inner = a_avg.clone();
let b_avg_tick_inner = b_avg.clone();
let c = thread::spawn(move || {
while a_avg_tick_inner.lock().unwrap().is_none()
|| b_avg_tick_inner.lock().unwrap().is_none()
{
print!("\x1B[2J\x1B[1;1H");
log::info!("Elapsed: {:?}", start.elapsed());
}
});
let nvx = read_fixture("test.generated.nvx");
let results = iterations
.par_iter()
.map(|_| test_nvx(&nvx))
.collect::<Vec<_>>();
a_avg = Some(results.iter().sum::<Duration>() / results.len() as u32);

print!("nvx done.");
log::info!("nvx avg: {:?}", a_avg);

let start = std::time::Instant::now();

let mut b_avg = None;

a.join().unwrap();
b.join().unwrap();
c.join().unwrap();
let json = read_fixture("test.generated.json");
let results = iterations
.par_iter()
.map(|_| test_json(&json))
.collect::<Vec<_>>();
b_avg = Some(results.iter().sum::<Duration>() / results.len() as u32);

log::info!("nvx avg: {:?}", a_avg.lock().unwrap().unwrap().unwrap());
log::info!("json avg: {:?}", b_avg.lock().unwrap().unwrap().unwrap());
print!("json done.");
log::info!("json avg: {:?}", b_avg);
}

0 comments on commit 8b2d89d

Please sign in to comment.