Задать вопрос
@IvankoPo

Как узнать время выполнения сортировки в C++?

В программировании новичок, недавно начал изучать сортировки, возник вопрос как можно вывести в консоль время выполнения моей сортировки.
Какие методы есть?
  • Вопрос задан
  • 2635 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Используйте либо time.h из Си, либо std::chrono из Си++11. Вот пример по второму.
#include <iostream>
#include <chrono>

int main()
{
    using Time = std::chrono::time_point<std::chrono::high_resolution_clock>;
    using Diff = std::chrono::milliseconds;

    Time t1 = std::chrono::high_resolution_clock::now();
    int i;
    std::cin >> i;
    Time t2 = std::chrono::high_resolution_clock::now();
    Diff diff = std::chrono::duration_cast<Diff>(t2 - t1);
    std::cout << diff.count() << " ms" << std::endl;
    return 0;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
const std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now();
my_sort();
const std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::microseconds>(t2 - t1).count();
Ответ написан
Комментировать
TrueBers
@TrueBers
Гуглю за еду
Mercury13 и fshp ответили верно.
С одним лишь исключением: std::chrono::high_resolution_clock — не монотонные часы. Т. е. они могут дрифтить даже относительно RTC, а этот дрифт будет корректироваться и влиять на результаты измерений. Например, когда вы будете делать измерения, и между стартом и стопом к вам прилетит синхронизация NTP.

Использовать нужно монотонные часы, для этого предназначены std::chrono::steady_clock. Они независимы от изменений и специально предназначены для измерений интервалов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы