나는 time
내 명령의 일부를 보내고. 이제 측정을 평균화하기 위해 명령을 지정된 횟수만큼 실행하고 시간을 정하고 계산 된 평균 및 표준 편차로 결과를 얻습니다. 결과는 다음과 같습니다.
avgtime -n 100 my_command
real 0m5.388s stdev 0m0.068s
user 0m5.380s stdev 0m0.067s
sys 0m0.004s stdev 0m0.000s
이를위한 UNIX 도구가 있습니까? GNU / Linux에 하나가 있습니까?
답변
파이썬이있는 모든 시스템에서 사용할 수있는 timeit 모듈을 사용해 볼 수 있습니다.
$ python -m timeit "__import__('os').system('my command here')"
10 loops, best of 3: 591 msec per loop
답변
정확히 UNIX 또는 GNU / Linux 도구는 아니지만 R 소프트웨어 환경을 사용하여 통계 계산 에 편안하게 사용할 수 있습니다 . ( 하지만 귀하의 작업에 대해 더 구체적인 것을 찾을 수는 없습니다 .)
편집 나는 그것을 의심 할 수 방법에 대한 벤치 마크 패키지가 물론있다 R
: rbenchmark
. 그것은 system.time()
당신이 직접 사용할 수도있는 것으로 보입니다 . 또는 간단한 스톱워치 기능 쌍을 살펴보십시오. 또한 참조 @Rosetta 코드 “시스템 명령 실행” (또는하지, 그건 system("command")
.)
Edit2 방금 오른쪽 “관련”열에서 ” 스크립트 내 시간 측정”이라는 질문을 보았습니다. 시간 이 걸리거나, 루프를 반복하고 ( N
시간), 시간을 다시 계산하고, 시간 범위를 계산하고, 나눈 값을 사용할 수도 있습니다. N
. (더 쉽게 시도 time ( for-loop )
하고 출력을 구문 분석하고 나누십시오 N
).
답변
R
평균, 표준 편차 및 기타 흥미로운 값을 빠르게 계산하는 데 사용할 수 있습니다 .
예를 들어 GNU 시간을 사용하여 몇 가지 런타임 측정 값을 CSV 파일에 쓸 수 있습니다.
function measure
{
f=$1; shift
n=$2; shift
echo wall,user,sys,rss > "$f"
for i in $(seq $n); do
/usr/bin/time --output "$f" --append --format '%e,%U,%S,%M' "$@" >/dev/null
done
}
그런 다음 R과 같이 다음과 같이 값을 생성 할 수 있습니다.
Rscript --vanilla -e "b=read.csv(file='$f');summary(b);sapply(b, sd);"
나는 R 출력을 약간 인쇄 하는 작은 벤치 마크 스크립트 를 만들었습니다 .
$ benchmark.sh 100 ./some_prog arg1 arg2
n=100 | min | Q1 | med | mean | Q3 | max | std
wall | 0.0400 | 0.0400 | 0.0500 | 0.0471 | 0.0500 | 0.0800 | 0.00624
user | 0.0400 | 0.0400 | 0.0400 | 0.0426 | 0.0400 | 0.0700 | 0.00562
sys | 0 | 0 | 0 | 0 | 0 | 0 | 0.00000
rss | 2608 | 2657 | 2704 | 2728 | 2764 | 2920 | 95.06524
답변
옵션 1- sqlite :
명령 및 시간 열이있는 간단한 테이블을 만들고 적절한 집계 계산으로 봅니다. 타이밍 후에 테이블에 행 을 추가 하십시오.
장점 : 솔루션 2와 비교하여 테이블을 정의하는 것이 더 간단합니다.
단점 : 데이터 보존에 대한 관리가 필요합니다.
옵션 2- rrdtool :
rrd 데이터베이스 파일, 데이터 정의 및 집계 함수를 정의하십시오. 타이밍 후으로 데이터베이스를 공급하십시오 rrdtool update ...
.
장점 :로 그래프를 쉽게 생성 할 수 있습니다 rrdtool graph ...
. 데이터 보존 문제가 없습니다 (라운드 로빈 데이터베이스).
단점 : 간단한 SQL 테이블 / 뷰에 비해 rrd 데이터베이스를 정의하기가 조금 더 어렵다