4
이전 주제에서 쓴 것처럼 : Benchmarking code - am I doing it right? 평균, 평균, 표준 편차 등과 같은 벤치 마크 통계를 얻는 방법을 찾아야합니다. 게시 한 방법을 사용하여 어떻게하면됩니까? 필자는 함수를 여러 번 호출하지 않고 시간 간격으로 코드를 벤치 마크하는 솔루션을 사용합니다. 어떤 아이디어?코드 벤치마킹 통계 -
buffsize = 1024;
buffer [buffsize];
totalcycles = 0
// arrays
walltimeresults = []
cputimeresults = []
// benchmarking
for i in (0, iterations):
start = walltime();
fun2measure(args, buffer);
end = walltime();
walltimeresults[i] = end - start;
start = cputime();
fun2measure(args, buffer);
end = cputime();
cputimeresults[i] = end - start;
c1 = cyclecount();
fun2measure(args, buffer);
c2 = cyclecount();
cyclesperbyte = c2-c1/(buffsize);
totalcycles += cyclesperbyte;
for i in range (0, iterations) : sum += walltimeresults[i];
avg_wall_time = sum/iterations;
sum = 0;
for i in range (0, iterations) : sum += cputimeresults[i];
avg_cpu_time = sum/iterations;
avg_cycles = totalcycles/iterations;
이 올바른지 :
나는 올바른 (의사가) 알고 해달라고, 하나를 내놓았다? 평균, 표준 편차 등은 어떻습니까?
감사 :
평균 (즉 평균)
표준 편차 분산의 제곱근
입니다! 코드에 대한 다른 조언? 무엇을 개선하고, 여기에서 변경할 수 있습니까? – nullpointer@nullpointer : 레벨을 올리고 전체적인 목적을 묻습니다. 가장 빠른 알고리즘을 찾는 것과 관련이 있다면, 나는 측정에 덜 관심이 있습니다. 나는 프로그램을 더 빨리 만드는 방법에 대한 통찰력을 얻는 것에 더 관심이있다. 그게 목표라면,이 도움이 될 수 있습니다 * (http://stackoverflow.com/a/1779343/23771). 당신은 아마도 최적의 프로그램으로 추정되는 지방량을 얼마만큼 줄일 수 있는지 놀랄 것입니다. –
다시 한번 감사드립니다. 이 주제를 읽을 것이지만, 가장 빠른 알고리즘을 찾는 것이 아니라 성능을 측정하는 것이 목적입니다. 그게 전부입니다. 단일 테스트 (하나의 함수 호출)는 벤치 마크에서 의미가 없다는 것을 알고 있습니다. 내 측정 값 '유용한'결과를 얻을 수 있다면, 바로이 일을하는지 궁금해합니다. – nullpointer