1. 벤치마크 설정 작업에 대해 타이머 작동법

초기 설정 작업이 긴 경우

func BenchmarkFoo1(b *testing.B) {
	expensiveSetup() // 초기 설정 작업
	b.ResetTimer()   // 벤치마크 타이머를 재설정함
	for i := 0; i < b.N; i++ {
		functionUnderTest()
	}
}

그렇다면 다음과 같이 긴 초기 설정 작업이 한 번이 아니라 루프 안에서 매번 수행된다면?

 func BenchmarkFoo2(b *testing.B) {
	for i := 0; i < b.N; i++ {
		b.StopTimer() // 벤치마크 타이머를 일시 정지함
		expensiveSetup()
		b.StartTimer() // 벤치마크 타이머를 다시 이어서 실행
		functionUnderTest()
	}
}

2. 마이크로 벤치마크의 결론 잘못 내리기

마이크로 벤치마크: 매우 작은 연산 단위로 측정하는 벤치마크, 결론을 잘못 내리기 쉬움

마이크로 벤치마크에서는 결과에 영향을 미치는 요인이 많음

대안