私は自分のコードの部分の効率をテストしようとしていますが、C++は型を使ってプログラムが消費するプロセッサ時間を測定できるctime
にclock
という関数を持っています。コード内の2つのポイント間の絶対時間を測定するだけではない、いくつかのRust同等物はありますか?私はこのコードを使用してきたC++のclock関数に相当するRustはありますか?
6
A
答えて
5
することは、あなたはシムのビットを追加する必要があります。少なくともOS Xでは、libcはclock
を公開していないようですが、はになります。これはclock_t
です(方程式のより難しい部分です)。 clock
を公開することは、その後ストレートフォワードです:
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);
}
私はおそらくかかわらず、どのような状況で呼び出すことがclock
として安全をマークラッパーを作ると思います。
+1
'libc'に' clock'が含まれていない理由を知りましょう。 'clock'は' C' stdlibにあるようです。 – WiSaGaN
3
:それはclock
を使用するためにを必要なら
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;
}
関連する問題
- 1. PHP関数 `parse_str`に相当するC#はありますか?
- 2. C++の仮想関数に相当するRustとは何ですか?
- 3. gluScaleImage関数に相当するものはありますか?
- 4. AndroidViewClientにはTimer()またはClock()関数はありますか?
- 5. MysqlのOracle関数NVLに相当する関数はありますか?
- 6. C++ std :: partial_sortに相当するC#はありますか?
- 7. C#:JTableに相当するものはありますか?
- 8. C#のWindows.UI.Xaml.Application.OnActivatedイベントに相当するJavaScriptはありますか?
- 9. JavaのFile.separatorに相当するC#はありますか
- 10. Rubyの `respond_to?`に相当するC#はありますか?
- 11. STL出力イテレータに相当するC#はありますか?
- 12. Swift/Obj-C/iOSに相当するルビーコンソールはありますか?
- 13. C#7.0に相当するMicrosoft.Net.Compilersはありますか?
- 14. SASのR関数テーブルに相当するものはありますか?
- 15. TCPDFの 'annotate'関数に相当するPython ReportLabはありますか?
- 16. Rのqchisq関数に相当するPythonはありますか?
- 17. BeautifulSoupのhas_attr()関数に相当するSeleniumはありますか?
- 18. Rのsample()関数に相当するPythonはありますか?
- 19. javaのOnReceive関数に相当するDelphiはありますか?
- 20. Clojureには `first`に相当するreduce関数がありますか?
- 21. NullPointerExceptionのC++に相当するものがありますか?
- 22. Rustに組み込みのID関数はありますか?
- 23. Cのモジュラス(数学関数)に相当しますか?
- 24. Objective-CのstringWithUTF8Stringに相当するJavaがありますか?
- 25. C#の 'nameof()'ステートメントに相当するSwiftがありますか?
- 26. SwiftのfatalErrorに相当するObjective-Cがありますか?
- 27. vbscript evalに相当するvb.net eval関数はありますか
- 28. Python os.pathsepのRustに相当するものは何ですか?
- 29. C scanf()関数に相当するcmdスクリプトは何ですか?
- 30. java.lang.Numberに相当するC++がありますか?
https://doc.rust-lang.org/time/time/fn.precise_time_ns.htmlのような高解像度タイマーで何が問題になっていますか? –
'libc' crate、' clock'関数 –
@Ker、OPは壁時計の時刻ではなく、ユーザのCPU時間について質問しています。 – WiSaGaN