일부 코드의 느리고 빠른 버전이 있고 두 코드를 비교하는 속도 향상 번호를보고 싶다고 가정 해보십시오. 느린 버전 번과 빠른 버전 m 번을 실행하여 시간 ( s 1 , … , s n ) 및 ( f 1 , … , f m )을 생성 합니다. 고속화를 생산하는 가장 간단한 방법은 수단을 평균하는 것입니다 ˉ 의 그러나 이것은 특이 치를 고려하지 않습니다.
질문 : 속도 향상 수치를보고 할 때 사용하는 가장 좋은 통계는 무엇입니까?
3
평균과 비교하여 표준 편차가 얼마나 큽니까? 무엇을 하든지 수행 한 내용을보고하고 오류 표시 줄이 큰 경우이를 표시해야합니다. 실제로 큰 경우 소스를 조사해야합니다. 프로그램 자체에 임의의 구성 요소가 없거나 다른 사람과 컴퓨터 리소스를 공유하지 않는 한 (클러스터 노드뿐만 아니라 네트워킹 또는 디스크 일 수도있는 경우가 아니라면) 대부분의 컴퓨터 코드는 시간에 꽤 결정적으로 실행되어야합니다. 디스크 리소스 경쟁이 문제가되는 경우 I / O를 비활성화 한 상태에서보고 성능을 고려할 수 있습니다 (일반적인 경우).
—
Bill Barth
Edison (Cray 슈퍼 컴퓨터)에서는 두 샘플간에 2 %의 차이가 있습니다. 내 랩탑에서 10 개 이상의 샘플에서 6-8 %의 표준 편차를 측정했습니다. 둘 다 계산 커널 전용이며 I / O는 없습니다.
—
Geoffrey Irving
분산이 이미 합리적으로 낮은 경우 특이 치를 언급하는 이유를 명확히하기 위해 : 이것은 이상적인 경우를보고하는 이상적인 기본 통계량이며,이 특별한 경우에는 이상적이지 않은 방법도 좋습니다.
—
Geoffrey Irving
문제는 당신이 무엇을 의사 소통하려고하는지, 그리고 공식이 가장 잘 의사 소통 할 것입니까? 나는 그 원인이 논문의 중심이 아닌 한, 실행 속도의 변동성을보고하는 논문을 본 적이 없다고 생각합니다. 런타임과 프로세서 / 작업 / 스레드 수 사이에 선형 관계가 있다고 가정하면 평균 비율을 사용하는 것이 좋지만 최대 대 최소 및 최소 대 최대의 비율로 오류 막대를 사용하는 것이 좋습니다. 범위를 보여주는 것이 중요하다고 생각한다면. 또한 변동성을 줄이기 위해 주파수 스케일링 및 작업 고정 옵션을 살펴 봐야합니다. :)
—
Bill Barth
IO를 제거하는 데 많은 트릭이있을 수 있습니다. 컴파일러 최적화에서 "Copy On Write"트릭 사이에는 실제로 분명하지 않은 관계가 있습니다. 나는 보통 d1 = loadData ()의 프로토 타입을 따른다; d2 = 복사 (d1); r1 = 알고 (d2); r2 = algo (d1)이며 두 번째 실행 시간 만 고려하십시오.
—
meawoppl