mirror of
https://github.com/sharkdp/hyperfine.git
synced 2026-11-02 09:01:25 +00:00
Unify the Windows CPU timer stop interface
This commit is contained in:
1 parent
683885a6c8
commit
6af23bb885
2 files changed
+10
-12
No files matched your search
@@ -82,17 +82,9 @@ pub fn execute_and_measure(mut command: Command) -> Result<Measurement> {
|
|||||||
discard(output);
|
discard(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(windows))]
|
|
||||||
let (time_user, time_system, peak_memory_usage, exit_status) = cpu_timer.stop(child)?;
|
let (time_user, time_system, peak_memory_usage, exit_status) = cpu_timer.stop(child)?;
|
||||||
|
|
||||||
#[cfg(windows)]
|
|
||||||
let exit_status = child.wait()?;
|
|
||||||
|
|
||||||
let time_wall_clock = wallclock_timer.stop();
|
let time_wall_clock = wallclock_timer.stop();
|
||||||
|
|
||||||
#[cfg(windows)]
|
|
||||||
let (time_user, time_system, peak_memory_usage) = cpu_timer.stop();
|
|
||||||
|
|
||||||
Ok(Measurement {
|
Ok(Measurement {
|
||||||
time_wall_clock,
|
time_wall_clock,
|
||||||
time_user,
|
time_user,
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
#![cfg(windows)]
|
#![cfg(windows)]
|
||||||
#![warn(unsafe_op_in_unsafe_fn)]
|
#![warn(unsafe_op_in_unsafe_fn)]
|
||||||
|
|
||||||
use std::{mem, os::windows::io::AsRawHandle, process, ptr};
|
use std::process::{self, Child, ExitStatus};
|
||||||
|
use std::{mem, os::windows::io::AsRawHandle, ptr};
|
||||||
|
|
||||||
|
use anyhow::Result;
|
||||||
|
|
||||||
use windows_sys::Win32::{
|
use windows_sys::Win32::{
|
||||||
Foundation::{CloseHandle, HANDLE},
|
Foundation::{CloseHandle, HANDLE},
|
||||||
@@ -84,7 +87,9 @@ impl CPUTimer {
|
|||||||
Self { job_object }
|
Self { job_object }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn stop(&self) -> (Time, Time, Information) {
|
pub fn stop(&self, mut child: Child) -> Result<(Time, Time, Information, ExitStatus)> {
|
||||||
|
let status = child.wait()?;
|
||||||
|
|
||||||
let mut job_object_info =
|
let mut job_object_info =
|
||||||
mem::MaybeUninit::<JOBOBJECT_BASIC_ACCOUNTING_INFORMATION>::uninit();
|
mem::MaybeUninit::<JOBOBJECT_BASIC_ACCOUNTING_INFORMATION>::uninit();
|
||||||
|
|
||||||
@@ -113,9 +118,10 @@ impl CPUTimer {
|
|||||||
// processes no longer associated with the job, in 100-nanosecond ticks."
|
// processes no longer associated with the job, in 100-nanosecond ticks."
|
||||||
let system_time =
|
let system_time =
|
||||||
Time::new::<nanosecond>((job_object_info.TotalKernelTime as f64) * 100.0);
|
Time::new::<nanosecond>((job_object_info.TotalKernelTime as f64) * 100.0);
|
||||||
(user_time, system_time, Information::zero())
|
|
||||||
|
Ok((user_time, system_time, Information::zero(), status))
|
||||||
} else {
|
} else {
|
||||||
(Time::zero(), Time::zero(), Information::zero())
|
Ok((Time::zero(), Time::zero(), Information::zero(), status))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user