c++:timer

发布于:2024-12-08 ⋅ 阅读:(107) ⋅ 点赞:(0)

1.设置休眠时间sleep_for

添加头文件

#include <thread>

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

int main(int argc, char const *argv[])
{
    // 休眠2秒
    std::this_thread::sleep_for(std::chrono::seconds(2));

    // 休眠500毫秒
    std::this_thread::sleep_for(std::chrono::milliseconds(500));

    // 休眠1000微妙
    std::this_thread::sleep_for(std::chrono::microseconds(1000));

    std::cout << "程序继续执行" << std::endl;
    return 0;
}

2.打印时间

添加头文件

#include <thread>

#include <chrono>
#Include <iomanip>  用于打印输出时间

2.1打印时间段(两个时间点的差值)

std::chrono::high_resolution_clock常用于获取精确时间的差值

    auto start = std::chrono::high_resolution_clock::now();
    std::this_thread::sleep_for(std::chrono::seconds(2));
    auto stop = std::chrono::high_resolution_clock::now();
    std::chrono::duration<double> duration = stop - start;
    std::cout << "stop-start=" << duration.count() << std::endl;

2.2输出当前系统时间

要输出当前系统时间一般用std::chrono::system::clock

    // 获取当前系统时间点
    auto now = std::chrono::system_clock::now();
    // 转换为time_t类型
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);
    // 将time_t转换为本地时间
    std::tm *local_time = std::localtime(&now_c);
    // 格式化输出日期和时间
    std::cout << "当前系统时间是: " << std::put_time(local_time, "%Y-%m-%d %H:%M:%S") << std::endl;

2.3计时器

例:计算打印100次hello用了多少时间

#include <iostream>
#include <chrono>

class Timer
{
public:
    std::chrono::time_point<std::chrono::high_resolution_clock> start, end;
    Timer()
    {
        start = std::chrono::high_resolution_clock::now();
    }
    ~Timer()
    {
        end = std::chrono::high_resolution_clock::now();
        std::chrono::duration<float> duration = end - start;

        float ms = duration.count() * 1000.0f;
        std::cout << "Timer took " << ms << "ms" << std::endl;
    }
};
void function()
{
    Timer timer;
    for (int i = 0; i < 100; i++)
    {
        std::cout << "hello\n";
    }
}

int main(int argc, char const *argv[])
{
    function();
    return 0;
}

2.4使用c++制作简易定时器

#include <iostream>
#include <chrono>
#include <iomanip>
#include <string>

class Timer
{
public:
    void starttime()
    {
        std::cout << "开始计时" << std::endl;
        start = std::chrono::high_resolution_clock::now();
    }
    void pausetime()
    {
        stop = std::chrono::high_resolution_clock::now();
        std::chrono::duration<double> duration = stop - start;
        std::cout << "计时结束" << std::endl;
        std::cout << "stop-start=" << duration.count() << std::endl;
    }
    void showtime()
    {
        auto now = std::chrono::system_clock::now();
        std::time_t now_c = std::chrono::system_clock::to_time_t(now);
        std::tm *local_time = std::localtime(&now_c);
        std::cout << "当前系统时间是:" << std::put_time(local_time, "%Y-%m-%d %H:%M:%S") << std::endl;
    }

private:
    std::chrono::time_point<std::chrono::high_resolution_clock> start;
    std::chrono::time_point<std::chrono::high_resolution_clock> stop;
};

int main(int argc, char const *argv[])
{
    Timer timer;
    char p;
    while (1)
    {
        std::cout << "请输入字符 s:start p:pause t:showtime q:quit" << std::endl;
        std::cin >> p;
        switch (p)
        {
        case 's':
            timer.starttime();
            break;
        case 'p':
            timer.pausetime();
            break;
        case 't':
            timer.showtime();
            break;
        case 'q':
            std::cout << "程序结束" << std::endl;
            return 0;
        }
    }

    return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到