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()

등을 제공합니다.

 

 
 
 
 
 
 
 
반응형