벤치마킹

Rust에서는 cargo bench로 벤치마크를 실행합니다. 이 Cargo 명령은 #[bench] 특성이 붙은 메서드를 실행합니다. 원문 작성 당시 이 특성은 불안정 기능이며 nightly 채널에서만 사용할 수 있었습니다.

.NET에서는 BenchmarkDotNet 라이브러리로 메서드 성능을 측정하고 추적할 수 있습니다. Rust에서 비슷한 역할을 하는 crate는 Criterion입니다.

Criterion 문서에 따르면 실행 간 통계 정보를 수집하고 저장합니다. 성능 저하를 자동으로 감지하고 최적화 결과를 측정할 수 있습니다.

Criterion은 #[bench] 특성 대신 criterion_group!과 criterion_main! 매크로를 사용합니다. Criterion 시작하기 문서에 나온 설정으로 안정 채널에서도 벤치마크를 실행할 수 있습니다.

BenchmarkDotNet처럼 벤치마크 결과를 지속적 벤치마킹용 GitHub Action과 통합할 수도 있습니다. Criterion은 여러 출력 형식을 지원합니다. 그중 bencher 형식은 nightly의 libtest 벤치마크 형식을 모방하며 해당 Action과 호환됩니다.