속도 향상 결과보고를위한 올바른 통계


12

일부 코드의 느리고 빠른 버전이 있고 두 코드를 비교하는 속도 향상 번호를보고 싶다고 가정 해보십시오. 느린 버전 번과 빠른 버전 m 번을 실행하여 시간 ( s 1 , , s n )( f 1 , , f m )을 생성 합니다. 고속화를 생산하는 가장 간단한 방법은 수단을 평균하는 것입니다 ˉ nm(s1,,sn)(f1,,fm) 그러나 이것은 특이 치를 고려하지 않습니다.

s¯f¯=mi<nsinj<mfj

질문 : 속도 향상 수치를보고 할 때 사용하는 가장 좋은 통계는 무엇입니까?


3
평균과 비교하여 표준 편차가 얼마나 큽니까? 무엇을 하든지 수행 한 내용을보고하고 오류 표시 줄이 큰 경우이를 표시해야합니다. 실제로 큰 경우 소스를 조사해야합니다. 프로그램 자체에 임의의 구성 요소가 없거나 다른 사람과 컴퓨터 리소스를 공유하지 않는 한 (클러스터 노드뿐만 아니라 네트워킹 또는 디스크 일 수도있는 경우가 아니라면) 대부분의 컴퓨터 코드는 시간에 꽤 결정적으로 실행되어야합니다. 디스크 리소스 경쟁이 문제가되는 경우 I / O를 비활성화 한 상태에서보고 성능을 고려할 수 있습니다 (일반적인 경우).
Bill Barth

Edison (Cray 슈퍼 컴퓨터)에서는 두 샘플간에 2 %의 차이가 있습니다. 내 랩탑에서 10 개 이상의 샘플에서 6-8 %의 표준 편차를 측정했습니다. 둘 다 계산 커널 전용이며 I / O는 없습니다.
Geoffrey Irving

분산이 이미 합리적으로 낮은 경우 특이 치를 언급하는 이유를 명확히하기 위해 : 이것은 이상적인 경우를보고하는 이상적인 기본 통계량이며,이 특별한 경우에는 이상적이지 않은 방법도 좋습니다.
Geoffrey Irving

2
문제는 당신이 무엇을 의사 소통하려고하는지, 그리고 공식이 가장 잘 의사 소통 할 것입니까? 나는 그 원인이 논문의 중심이 아닌 한, 실행 속도의 변동성을보고하는 논문을 본 적이 없다고 생각합니다. 런타임과 프로세서 / 작업 / 스레드 수 사이에 선형 관계가 있다고 가정하면 평균 비율을 사용하는 것이 좋지만 최대 대 최소 및 최소 대 최대의 비율로 오류 막대를 사용하는 것이 좋습니다. 범위를 보여주는 것이 중요하다고 생각한다면. 또한 변동성을 줄이기 위해 주파수 스케일링 및 작업 고정 옵션을 살펴 봐야합니다. :)
Bill Barth

IO를 제거하는 데 많은 트릭이있을 수 있습니다. 컴파일러 최적화에서 "Copy On Write"트릭 사이에는 실제로 분명하지 않은 관계가 있습니다. 나는 보통 d1 = loadData ()의 프로토 타입을 따른다; d2 = 복사 (d1); r1 = 알고 (d2); r2 = algo (d1)이며 두 번째 실행 시간 만 고려하십시오.
meawoppl

답변:


9

Bill Barth가 이미 위에서 언급 한 모든 것 외에도 사람들 이 여러 번의 달리기 중 가장 빠른 것으로보고한다고 언급하겠습니다 . 이론상 실제 실행 시간은 이상적인 실행 시간에 다른 프로세스 실행, OS 지연, 네트워크 지연 등으로 인해 발생하는 속도 저하의 수에 관계없이 있습니다. 이는 우리가 관심을 갖지 않는 모든 노이즈이므로 가장 빠른 실행 시간을 사용합니다. 우리가 정말로 알고 싶은 것과 가장 가깝습니다.


불행히도이 알고리즘은 두 알고리즘 사이의 속도 향상을보고 할 때 도움이되지 않습니다.
Geoffrey Irving

3
@GeoffreyIrving, 왜 안돼? 두 알고리즘 모두 이론적 성능 기대치 대 문제 크기 (또는 프로세서 수 또는 기타 비 통계적 매개 변수)가 있으며 하위 및 매개 변수 독립적 인 용어는 무시됩니다. 가장 빠른 시간을 사용하고 (이 사실에 주목) 단순히 추가 용어를 무시하는 데 도움이됩니다. 좋은 전략처럼 보입니다. 다르게 말하지 않으면 알고리즘과의 차이점을 가장 효과적으로 전달하는 방법을 찾으려고하는 것처럼 보이며 Wolfgang의 제안은 기존의 것으로 예상되므로 해당 정보를 가장 잘 전달할 수 있습니다.
Bill Barth

1
네, 맞습니다. 나는 행복하게 진술을 철회한다.
Geoffrey Irving

(+1) 부수적 인 질문 : 비대칭 노이즈 분포 등에 대한 귀하의 요점을 참조하십시오 . 구현 A와 구현 B를 만들고이를 벤치마킹하고 합리적인 양의 실행 후에 25 번째 Quantile과 중앙값과 평균은 B보다 A에서 ~ 4.5x 빠르며 0 % Quantile은 ~ 3x입니다. 구현 A와 B를 비교할 때 다음과 같은 사실에도 불구하고 yes A is theoretically only ~3x fasterB 대신 구현 A를 사용할 때 속도 향상을 대표하지 않는 ~ 3 배의 속도 향상이 예상되지 않습니까? (실제로 실제 예입니다)
usεr11852

1
@ usεr11852 : 그것은 모두 당신이 사용중인 시스템에 달려 있습니다. 중앙값 또는 25 분위수가 여기에 가설을 세우는 방식으로 통계를 왜곡 할 수있을 정도로 멀다면 잡음이 많은 시스템 일 가능성이 큽니다. 예를 들어, 다른 사람들이 동시에 사용할 수 있습니다. 다른 사람들이 반복 실험을 수행하는 시스템을 대표하지 않을 수 있으며, 그 경우 결과를 과도하게 팔고있는 것처럼 들립니다. 따라서 여전히 최고의 달리기를보고하는 것이 좋습니다. 당신이 무엇을 하든지, 당신은 당신이 사용하는 통계를 종이에보고해야합니다.
Wolfgang Bangerth

1

통계적 추정치를 제공 하기 위해 중간 값 을 사용하는 것이 좋습니다 . 평균과 달리 중앙값은 특이 치에 의해 손상되지 않습니다.


1
모든 노이즈가 양수인 데이터 (예 : 비대칭 노이즈 분포)의 경우 중앙값은 다른 통계량만큼 나쁩니다. 런타임의 경우 실제로 해당됩니다. 위의 답변을 참조하십시오.
Wolfgang Bangerth

0

표준 편차를 무시할 수없는 경우 알고리즘 중 하나의 타이밍으로 각각 구성된 두 개의 상자 그림을 나란히 사용할 수 있습니다 . 수치 분석의 표준은 아니지만 반드시 이런 종류의 정보를 표시하는 데 큰 역할을합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.