#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() в цикле, что на самом деле является стандартным способом получения более повторяемых результатов на компьютере, либо с помощью фиксированного количества, либо фактически используя прошедшее время до достижения определенного предела, а затем вычисляя время выполнения как среднее за все прогоны. Это уменьшит шум и повысит точность.