当前位置:首页 > 技术分析 > 正文内容

c++ 杂项(1) 获取系统启动运行时间

ruisui883个月前 (02-03)技术分析11

1、获取系统启动运行时间

a、windows平台使用

ULONGLONG GetTickCount64(VOID);

示例:

#include <iostream>  
#include <windows.h>  
  
int main() {  
    std::cout << "系统运行时间: " << GetTickCount64() << " 毫秒" << std::endl;  
    return 0;  
}

b、linux 平台使用

int clock_gettime (clockid_t __clock_id, struct timespec *__tp)

示例:

#include <stdio.h>  
#include <time.h>  
  
int main() {  
    struct timespec ts;  
    clock_gettime(CLOCK_MONOTONIC, &ts);
    std::cout << "系统运行时间: " << (int64_t)(ts.tv_sec * 1000 + ts.tv_nsec / 1000000) << " 毫秒" << std::endl; 
    return 0;  
}

结合下, 以一个工具类封装:

#ifndef __XX_TOOL_H__
#define __XX_TOOL_H__

#include <stdint.h>
#ifdef _WIN32
#include <windows.h>
#else
#include <time.h>
#endif

class XXTool {
public:

    //系统运行时间
    static int64_t GetTickCount() {
#ifdef _WIN32
        return ::GetTickCount64();
#else
        struct timespec ts;
        clock_gettime(CLOCK_MONOTONIC, &ts);
        return (int64_t)(ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
#endif
    }
};

#endif

惯例, 使用文心一言分析修正

您这段代码是一个用于获取系统运行时间的函数。它首先检查是否定义了_WIN32宏,如果是,则使用Windows API的GetTickCount64函数来获取高精度时间戳。如果未定义该宏(即代码运行在非Windows平台上),则使用clock_gettime函数获取当前时间,并计算出自系统启动以来的时间(以毫秒为单位)。

这段代码的主要目的是提供一种跨平台的方法来获取系统运行时间,无论是在Windows还是其他操作系统上。

以下是该代码的逐行解释:

  1. //系统运行时间: 这是一个注释,用于解释接下来的代码功能。
  2. static int64_t GetTickCount() {: 定义一个静态函数GetTickCount,该函数返回一个int64_t类型的时间戳。
  3. #ifdef _WIN32: 这是一个预处理指令,检查是否定义了_WIN32宏。
  4. return ::GetTickCount64();: 如果_WIN32宏已定义(即在Windows平台上),则调用Windows API的GetTickCount64函数来获取高精度时间戳,并返回。
  5. #else: 如果未定义_WIN32宏(即在非Windows平台上)。
  6. struct timespec ts;: 定义一个timespec结构体变量ts,用于存储时间信息。
  7. clock_gettime(CLOCK_MONOTONIC, &ts);: 使用clock_gettime函数获取当前时间,并存储在ts结构体中。这里使用的是CLOCK_MONOTONIC时钟,它是一个单调时钟,不受系统时间调整的影响。
  8. return (int64_t)(ts.tv_sec * 1000 + ts.tv_nsec / 1000000);: 将获取的时间(秒和纳秒)转换为毫秒并返回。
  9. #endif: 结束条件编译块。

总结:该代码的目的是提供一种跨平台的方法来获取系统运行时间,根据不同的操作系统使用相应的方法来实现。在Windows上使用Windows API,在其他操作系统上使用clock_gettime函数。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/734.html

标签: spec.ts
分享给朋友:

“c++ 杂项(1) 获取系统启动运行时间” 的相关文章

深入理解Vue.js组件通信:父子组件与子父组件数据交互详解

什么是Vue组件通讯 Vue.js 组件通信是指在 Vue 应用的不同组件之间进行数据交换和状态同步的过程。由于 Vue 的组件是基于单文件组件(SFCs)的模块化设计,每个组件都有自己的作用域,因此它们不能直接访问彼此的数据。为了使组件之间能够协同工作,Vue 提供了几种不同的通信方式。以下是 V...

react hooks自定义组件居然能这样做

前言  这里写一下如何封装可复用组件。首先技术栈 react hooks + props-type + jsx封装纯函数组件。类组件和typeScript在这不做讨论,大家别白跑一趟。接下来会说一下封装可复用组件的思路,比如一个新手应该怎么去封装,都需要有哪些东西。  然后说一些复杂组件需要的功能,...

jvm疯狂吃内存,到底是谁的锅?

jvm应该是每一个java程序员都需要掌握的内容,但是在没有遇到问题之前,很多都是基于理论的,唯有实战才能增加个人的知识储备。本文是从一个角度来分析是谁在狂吃内存,希望对你有所帮助。本文是易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......ps:本文来源于:http...

html5+css3做的响应式企业网站前端源码

大家好,今天给大家介绍一款,html5+css3做的响应式企业网站前端源码 (图1)。送给大家哦,获取方式在本文末尾。首页banner幻灯片切换特效(图2)首页布局简约合理(图3)关于我们页面(图4)商品列表(图5)商品详情(图6)服务介绍(图7)新闻列表(图8)联系我们(图9)源码完整,需要的朋友...

全新斯柯达柯珞克Karoq深度评测:大众替代品

“斯柯达柯珞克是一款出色的全能家庭 SUV,具有许多有用的功能”价格36,605 英镑- 49,190 英镑优点方便的 VarioFlex 后排座椅非常适合家庭入住驾驶乐趣缺点保修期短保守的内饰性格比Yeti少结论——斯柯达柯珞克是一辆好车吗?斯柯达柯珞克是在辉煌的七座 斯柯达柯迪亚克之后推出的,因...

vue中router常见的三种传参方式

目录:我们在使用vue开发的过程中使用router跳转的时候肯定会遇到传参的情况;一般情况就三种传参是最常见的;那我们就来看看都有那几种传参方式吧!第一种:{ path: '/mall:id', name: 'Mall', component:...