Функция clock
Функция clock возвращает количество тактов
процессора, прошедших с начала выполнения программы.
Возвращаемое значение имеет тип clock_t и
измеряется в тактах. Чтобы перевести такты в секунды,
нужно разделить результат на константу CLOCKS_PER_SEC.
Функция не принимает параметров.
Функция объявлена в заголовочном файле <ctime>.
Обычно используется для измерения времени выполнения
участка кода: засекают значение clock до и
после выполнения блока, а затем вычисляют разницу.
Синтаксис
clock_t clock();
Пример
Давайте измерим время выполнения простого цикла и выведем результат в секундах:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
clock_t start = clock();
long long sum = 0;
for (int i = 0; i < 100000000; i++)
{
sum += i;
}
clock_t end = clock();
double seconds = double(end - start) / CLOCKS_PER_SEC;
cout << "Sum: " << sum << endl;
cout << "Time: " << seconds << " seconds" << endl;
return 0;
}
Результат выполнения кода:
"Sum: 4999999950000000"
"Time: 0.234 seconds"
Пример
Давайте сравним время выполнения двух разных циклов и выведем, какой из них быстрее:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
clock_t start1 = clock();
long long sum1 = 0;
for (int i = 0; i < 50000000; i++)
{
sum1 += i * 2;
}
clock_t end1 = clock();
clock_t start2 = clock();
long long sum2 = 0;
for (int i = 0; i < 50000000; i++)
{
sum2 += i;
}
clock_t end2 = clock();
double t1 = double(end1 - start1) / CLOCKS_PER_SEC;
double t2 = double(end2 - start2) / CLOCKS_PER_SEC;
cout << "First loop: " << t1 << " seconds" << endl;
cout << "Second loop: " << t2 << " seconds" << endl;
return 0;
}
Результат выполнения кода:
"First loop: 0.187 seconds"
"Second loop: 0.094 seconds"
Пример
Давайте выведем количество тактов процессора, прошедших с начала программы:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
clock_t ticks = clock();
cout << "Ticks since start: " << ticks << endl;
cout << "CLOCKS_PER_SEC: " << CLOCKS_PER_SEC << endl;
return 0;
}
Результат выполнения кода:
"Ticks since start: 1250"
"CLOCKS_PER_SEC: 1000000"