Rust 중급
[Rust] 코드 실행 랩타임 측정하기
바로크냥
2022. 11. 2. 20:55
코드 실행 랩타임 측정하기
Rust의 standard library인 time을 활용해서 코드 실행 시간을 측정하는 방법을 소개합니다.
코드 보겠습니다.
use std::time::Instant;
// 팩토리얼을 구하는 함수
fn factorial(n: u128) -> u128 {
match n {
0 => 0,
1 => 1,
_ => factorial(n - 1) * n
}
}
fn main() {
let n = 25;
let now = Instant::now(); // 현재 시각
let result = factorial(n);
let lap = now.elapsed().as_nanos(); // 랩타임 측정
println!("factorial({})={}, lap : {} ns", n, result, lap);
}
//출력
factorial(25)=15511210043330985984000000, lap : 1000 ns
- 실행 시간을 측정하기 위해 factorial 함수를 만들고 실행합니다.
- time은 standard library에 속해 있기 때문에 cargo.toml에 따로 등록하지 않아도 사용할 수 있습니다.
- `use std::time::Instant;` 를 사용하는 까닭은 네임스페이스를 사용해서 코드를 단순하게 만들기 때문입니다.
- 팩토리얼 함수를 만들면서 일부러 match문을 사용했습니다. if문을 사용하는 것보다 훨씬 단순하게 작성할 수 있습니다. if문으로 구현하는 것과 속도에서는 큰 차이가 없는 것같습니다. 직접 구현해 보시고 테스트 해보십시오.
- `let now = Instant::now(); `으로 현재 시각의 타임스탬프를 구합니다.
- 랩타임을 구하는 매소드가 따로 있어서 시작과 끝에서 타임스탬프를 찍고 그 차를 구하는 방식을 사용하지 않아도 됩니다.
let lap = now.elapsed().as_nanos();
- elapsed를 표현하는 시간 단위를 정하기 위해
as_nanos()
as_secs()
as_millis()
as_micros()
as_secs_f64()
as_secs_f32()
등을 제공합니다.
반응형