Измерьте время выполнения функции в C ++

Опубликовано: 31 Декабря, 2021

Мы можем узнать время, затрачиваемое различными частями программы, с помощью библиотеки std :: chrono, представленной в C ++ 11. Мы обсудили в разделе Как измерить время, затрачиваемое программой на C. Описанные здесь функции поддерживаются и в C ++. но они специфичны для C. Для чистых и надежных программ на C ++ мы должны стремиться использовать только специфические языковые конструкции C ++.

std :: chrono имеет два разных объекта - момент времени и продолжительность. Точка времени, как следует из названия, представляет собой момент времени, тогда как продолжительность представляет интервал или промежуток времени. Библиотека C ++ позволяет нам вычесть две точки времени, чтобы получить интервал времени, прошедший между ними. Используя предоставленные методы, мы также можем преобразовать эту продолжительность в соответствующие единицы.

Std :: chrono предоставляет нам три тактовых генератора с разной точностью. High_resolution_clock является наиболее точным и, следовательно, используется для измерения времени выполнения.

Шаг 1. Получите момент времени до вызова функции.

#include <chrono>
using namespace std::chrono;
// Use auto keyword to avoid typing long
// type definitions to get the timepoint
// at this instant use function now()
auto start = high_resolution_clock::now();

Шаг 2. Получите момент времени после вызова функции.

#include <chrono>
using namespace std::chrono;
// After function call
auto stop = high_resolution_clock::now();

Шаг 3. Получите разницу во временных точках и примените ее к требуемым единицам.

// Subtract stop and start timepoints and
// cast it to required unit. Predefined units
// are nanoseconds, microseconds, milliseconds,
// seconds, minutes, hours. Use duration_cast()
// function.
auto duration = duration_cast<microseconds>(stop - start);
// To get the value of duration use the count()
// member function on the duration object
cout << duration.count() << endl;


Полная программа на C ++, демонстрирующая процедуру, приведена ниже. Мы заполняем вектор некоторыми случайными числами и измеряем время, затраченное функцией sort () на сортировку этого вектора.

// C++ program to find out execution time of
// of functions
#include <algorithm>
#include <chrono>
#include <iostream>
#include<vector>
using namespace std;
using namespace std::chrono;
// For demonstration purpose, we will fill up
// a vector with random integers and then sort
// them using sort function. We fill record
// and print the time required by sort function
int main()
{
vector< int > values(10000);
// Generate Random values
auto f = []() -> int { return rand () % 10000; };
// Fill up the vector
generate(values.begin(), values.end(), f);
// Get starting timepoint
auto start = high_resolution_clock::now();
// Call the function, here sort()
sort(values.begin(), values.end());
// Get ending timepoint
auto stop = high_resolution_clock::now();
// Get duration. Substart timepoints to
// get durarion. To cast it to proper unit
// use duration cast method
auto duration = duration_cast<microseconds>(stop - start);
cout << "Time taken by function: "
<< duration.count() << " microseconds" << endl;
return 0;
}

Выход: (Зависит от машины)

Время, затраченное функцией: 3062 микросекунды

использованная литература
https://www.geeksforgeeks.org/chrono-in-c/

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
Предыдущий
Измеряйте время выполнения с высокой точностью в C / C ++
Следующий
Как измерить время, затраченное функцией в C?
Рекомендуемые статьи
Страница :
Статья предоставлена:
Саян Махапатра
@Sayan Mahapatra
Голосуйте за трудности
Текущая сложность: средняя
Улучшено:
  • интенсивное увлечение
  • ошибки
  • Sohammalviya65
Теги статьи:
  • CPP-библиотека
  • cpp-головоломка
  • C ++
Теги практики:
  • CPP
Сообщить о проблеме
C++

РЕКОМЕНДУЕМЫЕ СТАТЬИ

20 Февраля, 2023
20 Февраля, 2023
20 Февраля, 2023
20 Февраля, 2023
20 Февраля, 2023