私は自分のコードの部分の効率をテストしようとしていますが、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. MysqlのOracle関数NVLに相当する関数はありますか?
- 3. C++ std :: partial_sortに相当するC#はありますか?
- 4. Rubyの `respond_to?`に相当するC#はありますか?
- 5. JavaのFile.separatorに相当するC#はありますか
- 6. C#:JTableに相当するものはありますか?
- 7. Rのqchisq関数に相当するPythonはありますか?
- 8. Rのsample()関数に相当するPythonはありますか?
- 9. STL出力イテレータに相当するC#はありますか?
- 10. Swift/Obj-C/iOSに相当するルビーコンソールはありますか?
- 11. Cのモジュラス(数学関数)に相当しますか?
- 12. vbscript evalに相当するvb.net eval関数はありますか
- 13. NullPointerExceptionのC++に相当するものがありますか?
- 14. Objective-CのstringWithUTF8Stringに相当するJavaがありますか?
- 15. C scanf()関数に相当するcmdスクリプトは何ですか?
- 16. JavaのC++からgetch()に相当するものはありますか?
- 17. Cの#includeに相当するものはOctaveにありますか?
- 18. JavaメソッドgetGlyphOutlineのC#に相当するものはありますか?
- 19. C#の 'new'修飾子に相当するJavaはありますか?
- 20. Java InputStreamとOutputStreamのC#に相当する方法はありますか?
- 21. JavaのようなCOLOR.whateverに相当するC++はありますか?
- 22. Javaデータ構造/ C++ STLに相当するものはありますか?
- 23. C#の 'continue'と 'break'文に相当するVBはありますか?
- 24. PerlのSonarに相当するものはありますか?
- 25. AjaxMinTaskのコマンドラインパラメータに相当するものはありますか?
- 26. GCCのstdcallに相当するものはありますか?
- 27. Tomcatのmod_statusに相当するものはありますか?
- 28. PHPのサブプロセスに相当するものはありますか?
- 29. PHPのpreg_replaceに相当するMySQLはありますか?
- 30. SQL Server:strpos()に相当するものはありますか?
https://doc.rust-lang.org/time/time/fn.precise_time_ns.htmlのような高解像度タイマーで何が問題になっていますか? –
'libc' crate、' clock'関数 –
@Ker、OPは壁時計の時刻ではなく、ユーザのCPU時間について質問しています。 – WiSaGaN