TL;DR
- Crap은 Linux의
perf_event_open과 macOS의kperf를 사용해 여러 명령어의 성능을 비교하는 명령줄 도구임. - 컬러 터미널 인터페이스에서 실행 시간과 최대 메모리 사용량, 하드웨어 성능 카운터를 비교함.
- 측정 시간, 색상 출력 방식, 셸 실행 여부, 워밍업 횟수와 실패 허용 여부를 설정할 수 있음.
- Linux와 macOS에서는 실행 시간과 최대 상주 메모리 사용량을 측정하며, Windows에서는 두 항목만 지원함.
- Hyperfine보다 새롭고 설정과 다듬어진 정도는 적지만, 최대 메모리 사용량과 추가 하드웨어 카운터를 제공함.
개요
- Crap은 Linux의
perf_event_open과 macOS의kperf기능을 사용해 여러 명령어의 성능을 비교하는 도구임. - 컬러 터미널 사용자 인터페이스(TUI)를 제공함.
사용법
- 사용 형식은
crap [options] <command1> ... <commandN>이며, 지정한 명령어들의 성능을 비교함. -d, --duration <ms>는 각 명령어를 반복 샘플링하는 시간을 설정하며 기본값은 5000밀리초임.--color <when>은 색상 출력 모드를 설정하며 기본값은auto임. 사용 가능한 값은auto,never,ansi임.-s, --shell <shell>은 명령어를 실행할 셸을 지정하며 기본값은 없음임.-w, --warmup <count>는 각 명령어 실행 전 워밍업 횟수를 지정하며 기본값은 0임.-f, --allow-failures는 종료 코드가 0이 아닌 경우에도 성능 비교를 허용하며 기본값은false임.
지원 플랫폼 및 카운터
wall_time: Linux, macOS, Windows에서 지원됨.peak_rss: Linux, macOS, Windows에서 지원됨.cpu_cycles: Linux에서 지원되며, macOS에서는sudo가 필요하고 Windows에서는 지원되지 않음.instructions: Linux에서 지원되며, macOS에서는sudo가 필요하고 Windows에서는 지원되지 않음.cache_references: Linux에서만 지원됨.cache_misses: Linux에서 지원되며, macOS에서는sudo가 필요하고 Windows에서는 지원되지 않음.branch_misses: Linux에서 지원되며, macOS에서는sudo가 필요하고 Windows에서는 지원되지 않음.
소스 빌드 및 설치
- Zig 0.16.0으로 테스트됨.
- 설치 경로를
~/.local로 지정하면~/.local/bin에 설치할 수 있음. - 최적화 수준을
ReleaseSafe로 설정해 설치 경로에 빌드하는 명령은zig build -Doptimize=ReleaseSafe -p <install_path>임.
Hyperfine과 비교
- Crap은 아직 새 프로젝트인 반면, Hyperfine은 성숙한 프로젝트로 설정 옵션이 더 많고 전반적으로 더 다듬어져 있음.
- Crap은 최대 메모리 사용량과 그 밖의 하드웨어 카운터 5개도 보고함.
- 기본 설정에서 Crap은 명령어를 셸에서 실행하지 않음.
-s/--shell zsh를 지정하면 셸에서 실행함. - 셸을 실행하지 않으면 측정 데이터에 셸 생성 과정의 잡음이 포함되지 않음.
- 대신 명령어 안의 문자열을 지원하지 않음.
- Hyperfine은 기본적으로 셸에서 명령어를 실행하며, 명령줄 옵션으로 셸 실행을 끌 수 있음.
- Crap은 첫 번째 명령어를 기준으로 삼고 나머지 명령어를 이에 상대적으로 비교함. 사용자는 차이값 색상이 나타내는 의미를 선택할 수 있음.
- Hyperfine은 기본적으로 실제 경과 시간이 가장 짧은 명령어를 먼저 표시하며, 명령줄 옵션으로 다른 기준 명령어를 명시할 수 있음.
- macOS에서 일부 추가 성능 카운터를 사용하려면
sudo권한이 필요함.
크레딧
andrewrk: Poop의 원작자이며, 플러시를 옹호한 것으로도 알려져 있음.tensorush: macOS 지원을 가능하게 한 원본 PR의 기여자임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요