Если вы хотите сделать бенчмаркинг, вместо использования std :: clock_t вам следует рассмотреть возможность использования time_point<high_resolution_clock>
с использованием std::chrono
:
using namespace std::chrono;
high_resolution_clock::time_point t = high_resolution_clock::now();
//... do what is to be measured
high_resolution_clock::time_point t2 = high_resolution_clock::now();
cout << duration_cast<milliseconds>(t2 - t).count();
Однако время - это всегда неточная мера, которая зависит от разрешения часов (например, для окон разрешение составляет около 15 мс). Таким образом, чем короче время измерения, тем выше относительная погрешность измерения. Таким образом, если выполнение вашей функции занимает 15 мс, в Windows вы получите ошибку в размере +/- 100%.
Единственный способ повысить надежность измерения - это измерить более длительное время, имея огромное количество итераций. Таким образом, в примере с 1 миллионом итераций относительная погрешность меры составляет 0,0001%.
Если вы можете сравнить свои функции отдельно, просто сделайте это так. Но если вы не можете измерить свои функции отдельно (например, потому что один производит ввод для другого), вы не можете использовать этот подход). Если вы хотите найти узкое место в вашем коде в таком случае, вам следует использовать правильный инструмент: a profiler .