Sto provando a verificare l'efficienza delle parti del mio codice e C++ ha una funzione clock
in ctime
che consente di misurare il tempo del processore consumato dal programma utilizzando il tipo clock_t
. Esiste un equivalente di ruggine che non si limiti a misurare il tempo assoluto tra due punti nel codice?Esiste una ruggine equivalente alla funzione orologio in C++?
6
A
risposta
5
Se è necessario utilizzare clock
, allora si avrà bisogno di aggiungere un po 'di spessore. Almeno su OS X, sembra che libc non esponga clock
, ma è dare clock_t
(che è la parte più difficile dell'equazione). Esporre clock
è quindi diretta:
extern crate libc;
mod ffi {
extern {
pub fn clock() -> ::libc::clock_t;
}
}
fn main() {
let start = unsafe { ffi::clock() };
let mut dummy = 0;
for i in 0..20000 { dummy += i };
let end = unsafe { ffi::clock() };
println!("{}, {}, {}, {}", dummy, start, end, end - start);
}
probabilmente sarei fare un wrapper che segna clock
come sicuro da chiamare in ogni circostanza però.
+1
Conoscere qualsiasi motivo per cui 'libc' non include' clock'. 'clock' sembra essere in' C' stdlib. – WiSaGaN
3
Sto usando questo codice:
extern crate libc;
use std::mem;
use std::io;
use std::time::Duration;
pub fn cpu_time() -> Duration {
unsafe {
let mut tp = mem::uninitialized();
if sys::clock_gettime(sys::CLOCK_PROCESS_CPUTIME_ID, &mut tp) == 0 {
Duration::new(tp.tv_sec as u64, tp.tv_nsec as u32)
} else {
panic!("cpu_time: {}", io::Error::last_os_error());
}
}
}
mod sys {
use libc::{c_int, timespec};
extern "C" {
pub fn clock_gettime(clk_id: c_int, tp: *mut timespec) -> c_int;
}
pub const CLOCK_PROCESS_CPUTIME_ID: c_int = 2;
}
Problemi correlati
- 1. Esiste una funzione equivalente alla funzione Oracle NVL in Mysql?
- 2. Passa l'elenco di Python alla funzione Ruggine
- 3. Esiste un equivalente alla funzione MATLAB bsxfun in python?
- 4. Esiste un equivalente alla funzione SUBSTRING in MS Access SQL?
- 5. Esiste un Python equivalente alla funzione smooth.spline in R
- 6. C++ equivalente alla funzione len() di Python?
- 7. Java Equivalente alla funzione iif
- 8. Esiste un equivalente alla direttiva #region del C# in AS3?
- 9. Esiste un Python equivalente alla funzione PHP htmlspecialchars()?
- 10. Esiste un equivalente in C++ della funzione explode() di PHP?
- 11. Esiste un equivalente di str_replace in C++?
- 12. C# equivalente alla risorsa Java
- 13. Esiste un equivalente C++ di una NullPointerException
- 14. Esiste un equivalente Java alla parola chiave 'checked' di C#?
- 15. Esiste una funzione Javascript simile alla funzione Contatore Python?
- 16. Esiste un equivalente standard getch() in C++?
- 17. Dojo equivalente alla funzione jQuery.text?
- 18. SQLite equivalente alla funzione GREATEST di PostgreSQL
- 19. Esiste un equivalente di Groovy in C#?
- 20. Esiste una funzione simile alla coalesce in Excel?
- 21. Funzione equivalente a C "_getch()" in Java?
- 22. orologio() di precisione in time.h
- 23. Esiste un equivalente in C++ per getcwd?
- 24. Esiste un equivalente alla parola chiave "var" C# in C++/CLI?
- 25. Esiste una funzione mappa?
- 26. Esiste una funzione equivalente PHP per Python os.path.normpath()?
- 27. Esiste un equivalente alla classe Bootstrap in un plug-in
- 28. F # List.map equivalente in C#?
- 29. JSP equivalente alla funzione include() di PHP?
- 30. Scala equivalente della variabile statica C++ in una funzione
Cosa c'è di sbagliato in un timer ad alta risoluzione come https://doc.rust-lang.org/time/time/fn.precise_time_ns.html? –
gabbia 'libc'', funzione' orologio' –
@Ker, OP sta chiedendo informazioni sul tempo di CPU dell'utente, non sul tempo dell'orologio a muro. – WiSaGaN