Время процесса изменяется для каждой отладки

#time #process #clock

#время #процесс #часы

Вопрос:

Для синхронизации алгоритма (миллисекунда) у меня есть приведенный ниже код:

 clock_t start = clock();
algorithm();
clock_t end = clock();
cout << float(end-start)/CLOCKS_PER_SEC*1000.0 << endl;
  

При каждой отладке результат меняется. Может кто-нибудь сказать мне, почему и как я могу исправить этот результат?

Комментарии:

1. Действительно ли разница во времени существенна? И если да, то почему?

Ответ №1:

Оно основано на текущей загрузке системы. Обычно ваша операционная система будет занята другими делами, и таким образом, иногда это займет больше или меньше времени.

На самом деле, выполнение также зависит от множества других факторов, например, от того, насколько интенсивно оно расходует память, процессор и ввод-вывод, и опять же зависит от других факторов.

Я предлагаю вызывать algorithm() в цикле, что на самом деле является стандартным способом получения более повторяемых результатов на компьютере, либо с помощью фиксированного количества, либо фактически используя прошедшее время до достижения определенного предела, а затем вычисляя время выполнения как среднее за все прогоны. Это уменьшит шум и повысит точность.