Я делаю следующее:
- Вызовите метод x раз и измерьте время
- Сделайте это n раз и рассчитайте среднее и стандартное отклонение этих измерений
Постарайтесь получить х до точки, где вы находитесь на> 1 секунду за измерение. Это немного уменьшит шум.
Среднее значение скажет вам среднюю производительность вашего теста и стандартное отклонение стабильности вашего теста / измерений.
Я также назначил своему приложению очень высокий приоритет, и когда я тестирую однопоточный алгоритм, я связываю его с одним ядром процессора, чтобы убедиться, что нет затрат на планирование.
Этот код демонстрирует, как это сделать в .NET:
Thread.CurrentThread.Priority = ThreadPriority.Highest;
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
if (Environment.ProcessorCount > 1)
{
Process.GetCurrentProcess().ProcessorAffinity =
new IntPtr(1 << (Environment.ProcessorCount - 1));
}