FizzBuzz関数処理時間計測クラスの問題点

常に同じ条件で関数を実行するというのは難しい。
前回こんなクラスを書いたけど、実行の仕方で結果が微妙に違うみたい。

int main(void){
	const unsigned int N = 999999;
	const unsigned int TIMES = 100;
	cout << TIMECHECK_N(FizzBuzz1, N, TIMES) << endl;
	cout << TIMECHECK_N(FizzBuzz2, N, TIMES) << endl;
	cout << TIMECHECK_N(FizzBuzz3, N, TIMES) << endl;
	cout << TIMECHECK_N(FizzBuzz4, N, TIMES) << endl;
	cout << TIMECHECK_N(FizzBuzz5, N, TIMES) << endl;
	return 0;
}
int main(void){
	const unsigned int N = 999999;
	const unsigned int TIMES = 100;
	cout << TIMECHECK_N(FizzBuzz1, N, TIMES) << "\n"
	 << TIMECHECK_N(FizzBuzz2, N, TIMES) << "\n"
	 << TIMECHECK_N(FizzBuzz3, N, TIMES) << "\n"
	 << TIMECHECK_N(FizzBuzz4, N, TIMES) << "\n"
	 << TIMECHECK_N(FizzBuzz5, N, TIMES) << endl;
	return 0;
}

 上の二つの記述法で計測をすると、一方で早かったものが他方では遅かったり、平均的に速くても、極端に遅い記録が混じったり。
 これは計測対象の関数の特性にもよるだろうけど、常に同じ条件で計測することの難しさを感じました。もう何が正確のなのやら、とわからなくなってくる。