C ++显示程序执行的开始时间和结束时间

时间:2018-11-24 16:36:59

标签: c++

我需要为我的数据结构和算法类完成这项任务。我必须显示执行时间需要多长时间。我设法显示了持续时间,但是教授希望我显示开始时间和结束时间。

这是我显示持续时间的摘要。 请注意,大部分代码都已被删除。

#include <iostream>
#include <iomanip>
#include "stdafx.h"
#include <chrono>
using namespace std;
using namespace std::chrono;

int main()
// Starting time for the clock.
auto start = high_resolution_clock::now();

// Insert sorting function code here.

// Ending the time for the clock.
auto stop = high_resolution_clock::now();

// Getting the duration of how much time was passed.
auto duration = duration_cast<microseconds>(stop - start);

cout << "Time taken by insertion sort: " << duration.count() << " microseconds" << endl;

对于某些琐碎的事,我确实表示歉意。我从未与时俱进。我可能还考虑了其​​他重要方面,以使代码也可以运行。

感谢您的帮助,祝您生活愉快。

2 个答案:

答案 0 :(得分:2)

将起点和终点转换为time-since-epoch,并将其转换为所需的持续时间:

#include <iostream>
#include <iomanip>
#include <chrono>
#include <thread>

using namespace std;
using namespace std::chrono;

int main() {

    // Starting time for the clock
    auto start = high_resolution_clock::now();

    // Simulate doing work
    this_thread::sleep_for(microseconds{1000});

    // Ending time for the clock
    auto stop = high_resolution_clock::now();

    auto duration = duration_cast<microseconds>(stop - start);
    cout << "Start time: " << duration_cast<microseconds>(start.time_since_epoch()).count() << endl;
    cout << "End time: " << duration_cast<microseconds>(stop.time_since_epoch()).count() << endl;
    cout << "Time taken by insertion sort: " << duration.count() << " microseconds" << endl;
}

答案 1 :(得分:1)

计时器之间有一个非常重要的区别。在可能会挂起计算机的虚拟环境中,您需要特别小心,因为这可能会更改时间测量。由于经过的时间,您通常只想测量代码执行所花费的时间,而不是等待运行的时间。

-挂钟时间

“现在几点了?”这个问题的答案。并且永远不要用于测量经过时间。 NTP,用户,夏令时可以调整两次测量之间的时间

-滴答时间(稳定时间)

用于测量经过时间的单调递增计数器。

std::chrono::high_resolution_clock有一个测试is_steady(),以确定它对于测量经过时间是否有效。

要显示开始时间和结束时间,通常的模式是记录开始的墙壁时间,以滴答为单位测量经过的时间,将滴答转换为秒,然后添加到开始时间以找到结束时间。

您可以阅读以下问题,以找到有关如何打印时间的许多答案:How to get current time and date in C++?