This commit is contained in:
Simon Wörner
2017-04-03 18:53:16 +02:00
parent 64558495b1
commit c112baa562
2 changed files with 30 additions and 31 deletions

View File

@@ -13,7 +13,8 @@ use sleep::{set_priority, sleep};
use time::precise_time_ns;
fn duration_from_ns(duration_ns: u64) -> Duration {
Duration::new(duration_ns / 1_000_000_000, (duration_ns % 1_000_000_000) as u32)
Duration::new(duration_ns / 1_000_000_000,
(duration_ns % 1_000_000_000) as u32)
}
fn duration_to_ns(duration: Duration) -> u64 {
duration.as_secs() * 1_000_000_000u64 + duration.subsec_nanos() as u64
@@ -86,43 +87,33 @@ fn main() {
{
let mut ap = ArgumentParser::new();
ap.set_description(env!("CARGO_PKG_DESCRIPTION"));
ap.refer(&mut min)
.add_option(&["--min"], Store,
"Sleep period start");
ap.refer(&mut max)
.add_option(&["--max"], Store,
"Sleep period end");
ap.refer(&mut step)
.add_option(&["--step"], Store,
"Sleep period step size");
ap.refer(&mut count)
.add_option(&["--loop"], Store,
"Count of measurements per period");
ap.refer(&mut realtime)
.add_option(&["--rt"], StoreTrue,
"Output file");
ap.refer(&mut output)
.add_option(&["-o", "--out"], Store,
"Output file");
ap.refer(&mut min).add_option(&["--min"], Store, "Sleep period start");
ap.refer(&mut max).add_option(&["--max"], Store, "Sleep period end");
ap.refer(&mut step).add_option(&["--step"], Store, "Sleep period step size");
ap.refer(&mut count).add_option(&["--loop"], Store, "Count of measurements per period");
ap.refer(&mut realtime).add_option(&["--rt"], StoreTrue, "Output file");
ap.refer(&mut output).add_option(&["-o", "--out"], Store, "Output file");
ap.add_option(&["-V", "--version"],
Print(env!("CARGO_PKG_VERSION").to_string()), "Show version");
Print(env!("CARGO_PKG_VERSION").to_string()),
"Show version");
ap.parse_args_or_exit();
}
if realtime {
let ret = set_priority(99);
if ret != 0 {
panic!("Set realtime priority failed.");
}
}
if output != "" {
file = Some(File::create(Path::new(output.as_str()))
.expect(format!("Open file '{}' failed", output).as_str()));
file = Some(File::create(Path::new(output.as_str())).expect(format!("Open file '{}' failed",
output)
.as_str()));
}
for duration in (min..max+1).step_by(step) {
for duration in (min..max + 1).step_by(step) {
let data = measure_delay_loop(duration_from_ns(duration), count);
let max_delay = data.iter().max().expect("Max delay not found");
@@ -134,8 +125,10 @@ fn main() {
match file.as_ref() {
Some(mut f) => {
let value = format!("{: >9} {}\n", duration, duration_to_ns(max_delay.1));
f.write_all(value.as_bytes())
.expect(format!("Write value '{}' to '{}' file failed", value, output).as_str());
f.write_all(value.as_bytes()).expect(format!("Write value '{}' to '{}' file failed",
value,
output)
.as_str());
}
None => {}
}