C++实现获取系统时间的方法小结

 更新时间:2024年03月21日 09:17:26   作者:chen_znn  
这篇文章主要为大家详细介绍了使用C++实现获取系统时间的一些常用方法,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下

Linux

方法一

使用time.h中的gettimeofday(),示例代码如下,

#include <iostream>
#include <sys/time.h>
 
int main() {
    struct timeval start, end;
    double totalTime;
 
    gettimeofday(&start, NULL);
 
    // 在这里执行代码
    ...
 
    gettimeofday(&end, NULL);
 
    totalTime = (end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec) / 1000000.0;
 
    std::cout << "Total time: " << totalTime << " seconds" << std::endl;
 
    return 0;
}

使用gettimeofday()函数获取的时间是以微秒为单位的。因此,需要将微秒转换为秒,即除以 1e6,以获得以秒为单位的时间间隔。 

方法二

使用time.h中的clock_gettime(),示例代码如下,

#include <iostream>
#include <time.h>
 
int main() {
    struct timespec start, end;
    double totalTime;
 
    clock_gettime(CLOCK_MONOTONIC, &start);
 
    // 在这里执行代码
    ...
 
    clock_gettime(CLOCK_MONOTONIC, &end);
 
    totalTime = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1e9;
 
    std::cout << "Total time: " << totalTime << " seconds" << std::endl;
 
    return 0;
}

使用clock_gettime()函数获取的时间是以纳秒为单位的。因此,需要将纳秒转换为秒,即除以 1e9,以获得以秒为单位的时间间隔。 

Windows

方法一

在Windows平台上,可以使用Windows API中的GetSystemTime()、GetSystemTimeAsFileTime()或QueryPerformanceCounter()等函数来获取系统时间。下面是一个简单的示例代码,

#include <iostream>
#include <windows.h>
 
int main() {
    LARGE_INTEGER frequency, start, end;
    double totalTime;
 
    QueryPerformanceFrequency(&frequency);
 
    QueryPerformanceCounter(&start);
 
    // 在这里执行代码
    ...
 
    QueryPerformanceCounter(&end);
 
    totalTime = static_cast<double>(end.QuadPart - start.QuadPart) / frequency.QuadPart;
 
    std::cout << "Total time: " << totalTime << " seconds" << std::endl;
 
    return 0;
}

方法二

C++11引入了<chrono>头文件,提供了高精度的时间测量功能。可以使用std::chrono::high_resolution_clock来获取高分辨率时钟,并通过std::chrono::time_point计算时间间隔。以下是一个示例代码,

#include <iostream>
#include <chrono>
 
int main() {
    auto start = std::chrono::high_resolution_clock::now();
 
    // 在这里执行代码
    ...
 
    auto end = std::chrono::high_resolution_clock::now();
 
    std::chrono::duration<double> totalTime = end - start;
 
    std::cout << "Total time: " << totalTime.count() << " seconds" << std::endl;
 
    return 0;
}

方法三

C++标准库中的<ctime>头文件提供了clock()函数,可用于测量CPU时间。这个函数返回自程序启动以来的时钟周期数。以下是一个简单示例,

#include <iostream>
#include <ctime>
 
int main() {
    clock_t start = clock();
 
    // 在这里执行代码
    ...
 
    clock_t end = clock();
 
    double totalTime = static_cast<double>(end - start) / CLOCKS_PER_SEC;
 
    std::cout << "Total time: " << totalTime << " seconds" << std::endl;
 
    return 0;
}

到此这篇关于C++实现获取系统时间的方法小结的文章就介绍到这了,更多相关C++获取系统时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++实现PyMysql的基本功能实例详解

    C++实现PyMysql的基本功能实例详解

    这篇文章主要介绍了C++实现PyMysql的基本功能,本文通过实例代码给大家介绍的非常详细,对大家的工作或学习有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • MFC程序执行过程深入剖析

    MFC程序执行过程深入剖析

    这篇文章主要介绍了MFC程序执行过程,包括对MFC执行流程的分析以及断点调试分析出的SDI程序执行流程,需要的朋友可以参考下
    2014-09-09
  • 浅谈C++虚重载操作符 virtual operator= 的使用方法

    浅谈C++虚重载操作符 virtual operator= 的使用方法

    下面小编就为大家带来一篇浅谈C++虚重载操作符 virtual operator= 的使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • C++示例讲解初始化列表方法

    C++示例讲解初始化列表方法

    这篇文章主要介绍了C++成员初始化列表,除了可以使用构造函数对类成员进行初始化之外,C++还提供了另外一种初始化的方法,叫做成员初始化列表。下面来看看文章的详细吧,需要的朋友可以参考一下
    2022-07-07
  • C语言规避野指针的方法流程

    C语言规避野指针的方法流程

    野指针就是指针指向的不是一个有效(合法)的地址,在程序中,如果访问野指针,可能会造成程序的崩溃,这篇文章主要介绍了C语言如何规避野指针,需要的朋友可以参考下
    2024-03-03
  • C语言数据结构之单链表存储详解

    C语言数据结构之单链表存储详解

    链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。本文将和大家一起聊聊C语言中单链表的存储,感兴趣的可以学习一下
    2022-07-07
  • VC实现ODBC数据库操作实例解析

    VC实现ODBC数据库操作实例解析

    这篇文章主要介绍了VC实现ODBC数据库操作的方法,非常有实用价值,需要的朋友可以参考下
    2014-07-07
  • C语言线性表的顺序表示与实现实例详解

    C语言线性表的顺序表示与实现实例详解

    这篇文章主要介绍了C语言线性表的顺序表示与实现实例详解,对于学习数据结构与算法的朋友很有参考借鉴价值,需要的朋友可以参考下
    2014-07-07
  • C++实现LeetCode(95.独一无二的二叉搜索树之二)

    C++实现LeetCode(95.独一无二的二叉搜索树之二)

    这篇文章主要介绍了C++实现LeetCode(95.独一无二的二叉搜索树之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++ 计算时间差的五种方法小结

    C++ 计算时间差的五种方法小结

    本文主要介绍了C++ 计算时间差的五种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论