Browse Source

adds an n-thread test + comparisons between sleep and yield_now

master
Jonathan Strong 6 years ago
parent
commit
6ba090e828
1 changed files with 58 additions and 6 deletions
  1. +58
    -6
      examples/hist-interval.rs

+ 58
- 6
examples/hist-interval.rs View File

@@ -1,3 +1,5 @@
#![feature(duration_from_micros)]
#![allow(unused)]

extern crate logging;

@@ -6,13 +8,59 @@ use std::thread;

use logging::hist::{Entry, HistLog, nanos};

const N_SECS: u64 = 60 * 60;
const N_SECS: u64 = 30;

//const N_THREADS: usize = 48;

macro_rules! n_threads {
($n:expr) => {
const N_THREADS: usize = $n;
const NAME: &'static str = concat!("sleeptest_", stringify!($n));
}
}

n_threads!(96);

fn main() {
::std::process::exit(test_n());
}

fn test_n() -> i32 {
let start = Instant::now();
let mut a = HistLog::new("test", "a", Duration::from_millis(1000));
let mut b = a.clone_with_tag("b");
let mut c = b.clone_with_tag("c");
let hist = HistLog::new(NAME, "master", Duration::from_millis(100));
for _ in 0..N_THREADS {
let mut a = hist.clone_with_tag("sleep_1ns");
thread::spawn(move || {

let mut prev = Instant::now();
let mut loop_time = Instant::now();

loop {
prev = loop_time;
loop_time = Instant::now();
a.record(nanos(loop_time - prev));
a.check_send(loop_time);


if loop_time - start > Duration::from_secs(N_SECS) { break }

thread::sleep(Duration::new(0, 1));
//thread::yield_now();
}
});
}

thread::sleep(Duration::from_secs(N_SECS));

0
}

fn test_3() -> i32 {
let start = Instant::now();
let hist = HistLog::new("sleeptest", "master", Duration::from_millis(100));
let mut a = hist.clone_with_tag("yield");
let mut b = hist.clone_with_tag("sleep_0");
let mut c = hist.clone_with_tag("sleep_100ns");

thread::spawn(move || {

@@ -31,7 +79,8 @@ fn main() {

i += 1;
//if i % 100 == 0 { thread::sleep(Duration::new(0, 0)); }
thread::sleep(Duration::new(0, 0));
//thread::sleep(Duration::new(0, 0));
thread::yield_now();
}
});

@@ -70,7 +119,10 @@ fn main() {
i += 1;
//if i % 100_000 == 0 { thread::sleep(Duration::from_millis(10)); }
//if i % 100 == 0 { thread::sleep(Duration::new(0, 0)); }
thread::sleep(Duration::new(0, 0));
thread::sleep(Duration::new(0, 100));
}

0
}



Loading…
Cancel
Save