首页 > 其他分享 >获取系统时间的方法

获取系统时间的方法

时间:2024-03-20 18:02:01浏览次数:23  
标签:std end clock tv 系统 获取 include 方法 start

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;
}

标签:std,end,clock,tv,系统,获取,include,方法,start
From: https://blog.csdn.net/qq_38964360/article/details/136883804

相关文章

  • 大模型主流微调训练方法总结 LoRA、Adapter、Prefix-tuning、P-tuning、Prompt-tuning
    大模型主流微调训练方法总结LoRA、Adapter、Prefix-tuning、P-tuning、Prompt-tuning概述大模型微调(finetuning)以适应特定任务是一个复杂且计算密集型的过程。本文训练测试主要是基于主流的的微调方法:LoRA、Adapter、Prefix-tuning、P-tuning和Prompt-tuning,并对它们进行......
  • linux系统kubernetes的资源对象secret
    资源对象-secretSecret实现场景解释內建的Secrets创建自己的Secretsecret使用使用Secret加密流程创建secret加密数据挂载到pod容器以变量形式挂载以Volume数据卷形式挂载案例Secret实现作用:加密数据,存储在etcd中,让pod容器,以挂载Volume方式进行访问场景凭证......
  • Windows编程系列:进程遍历的几种方法
    在应用层下,进程遍历有多种方式,这里介绍几种常用的方式:进程快照、ZwQuerySystemInformation/NtQuerySystemInformation、EnumProcesses函数、WMI等。 在C#中Process类提供了一个GetProcesses()函数,这个函数内部就是调用的NtQuerySystemInformation进行获取。 进程快照这种方......
  • linux系统kubernetes容器检查和恢复机制
    容器检查和恢复机制容器检查和恢复机制命令模式探针httpget方式探针POD的恢复策略容器检查和恢复机制在kubernetes中,可以为容器定义一个健康探针,kubelet就会根据这个Probe的返回值决定这个容器的状态,而不是直接以容器是否运行(来自Docker返回的信息)作为依据......
  • WPF MVVM模式ListBox下ContextMenu绑定Command的方法以及将所选的Item的数据传回去
    需求:ListBoxItem上右键,将数据传参。疑问:ContextMenu不继承DataContext,导致直接用RelativeSource找根的方式也绑定不到。解决方法:在ListBox.ContextMenu里写菜单,就可以直接绑定到ViewModel层的命令了,参数先用RelativeSource找到ContextMenu,再绑定PlacementTarget.SelectedItem。......
  • Android第一行代码——快速入门 Kotlin 编程(3.7 Kotlin课堂:标准函数和静态方法)
    目录3.7        Kotlin课堂:标准函数和静态方法3.7.1    标准函数with、run和apply3.7        Kotlin课堂:标准函数和静态方法        现在我们即将进入本书首次的Kotlin课堂,之后的几乎每一章中都会有这样一个环节。虽说目前你已经可......
  • 【Python使用】python高级进阶知识md总结第5篇:获取进程编号,1. 获取进程编号的目的【
    python高级进阶全知识知识笔记总结完整教程(附代码资料)主要内容讲述:操作系统,虚拟机软件,Ubuntu操作系统,Linux内核及发行版,查看目录命令,切换目录命令,绝对路径和相对路径,创建、删除文件及目录命令,复制、移动文件及目录命令,终端命令格式的组成,查看命令帮助。HTTP请求报文,HTTP响应报文......
  • 操作系统综合题之“采用记录型信号量机制实现上述两个进程的同步算法(代码补充)”
    1.问题:设有无穷多个整数缓冲区(即为无界缓冲池),A进程从输入设备逐个地读入整数并写入缓冲区,B进程则逐个地从缓冲区取出整数进行打印。其中存放整数的变量为item,缓冲区名为buffer,读取过程使用函数getAItem(int*item)来完成,而打印整数使用函数printAItem(intitem)来完成。请用记录......
  • 操作系统综合题之“采用记录型信号量机制实现爸爸与妈妈进程的同步(爸妈擀饼问题)”
    1.问题:爸爸擀面,妈妈烙饼,面板上只能容纳两张擀好的饼,只有当面板上有空闲空间时,爸爸才能把擀好的饼放在面板上。只有当面板上有时,妈妈才能从面板上取饼。试采用记录型信号量机制实现爸爸与妈妈进程的同步答:设置两个信号量资源:varempty,full:semaphore初始两个资源信号量:empty.......
  • windows系统下使用pip安装 Superset
    windows系统下使用pip安装Superset一安装ANACONDAAnaconda官方网站就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。下载地址:免费下载(anaconda.com)直接点击下一步完成安装二......