Linux获取程序运行时间(微秒级精度)

在 <sys/time.h> 中定义了 gettimeofday()函数,用于获得当前精确时间(1970年1月1日到现在的时间)

//函数声明
int gettimeofday (struct timeval * tv, struct timezone * tz);
//参数1:保存获取时间结果的结构体
struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};
//参数2:保存时区结果的结构体
struct timezone {
    int tz_minuteswest;     /* minutes west of Greenwich */
    int tz_dsttime;         /* type of DST correction */
};

使用例子

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <sys/time.h>
 
int main(){
    struct timeval tv1, tv2;
    gettimeofday(&tv1,NULL);//获取开始时间
    //输出程序开始的时刻
    cout << "second: " << tv1.tv_sec << endl;  //秒
    cout << "millisecond: " << tv1.tv_sec*1000 + tv1.tv_usec/1000 << endl;  //毫秒
    cout << "microsecond: " << tv1.tv_sec*1000000 + tv1.tv_usec << endl; //微秒
    //.......
    //程序运行
 	//......
 	
    gettimeofday(&tv2,NULL);//获取程序结束的时刻,两个时刻作差即可获得运行时间
    cout << "second: " << tv2.tv_sec - tv1.tv_sec  << endl;  //秒
    cout << "millisecond: " << tv2.tv_sec*1000 + tv2.tv_usec/1000 - (tv1.tv_sec*1000 + tv1.tv_usec/1000) << endl;  //毫秒
    cout << "microsecond: " << tv2.tv_sec*1000000 + tv2.tv_usec - (tv1.tv_sec*1000000 + tv1.tv_usec) << endl; //微秒
    return 0;
}

结果演示

second: 1608131402
millisecond: 1608131402695
microsecond: 1608131402695630

second: 0
millisecond: 0
microsecond: 66
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
您可以使用VBA中的`Timer`函数来获取当前时间,但是它只能精确到秒,无法达到微秒精度。要在VBA中获取微秒的时间,您可以使用Windows API函数来实现。 以下是一个示例代码,演示如何使用Windows API函数获取微秒的时间: ```vba Option Explicit #If VBA7 Then Declare PtrSafe Sub GetSystemTimePreciseAsFileTime Lib "kernel32" (ByRef lpSystemTimePrecise As FILETIME) #Else Declare Sub GetSystemTimePreciseAsFileTime Lib "kernel32" (ByRef lpSystemTimePrecise As FILETIME) #End If Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Function GetPreciseTime() As Double Dim systemTime As FILETIME Dim currentTicks As Double GetSystemTimePreciseAsFileTime systemTime currentTicks = (systemTime.dwHighDateTime * 2 ^ 32 + systemTime.dwLowDateTime) / 10 ' 转换为微秒 GetPreciseTime = currentTicks End Function Sub Test() Dim startTime As Double Dim endTime As Double startTime = GetPreciseTime() ' 这里放置您要测试的代码 endTime = GetPreciseTime() MsgBox "代码执行时间(微秒): " & endTime - startTime End Sub ``` 在上面的示例代码中,`GetSystemTimePreciseAsFileTime`函数从系统获取当前时间(精确到纳秒),然后通过转换计算得到微秒的时间。`GetPreciseTime`函数返回当前时间的微秒数。您可以在`Test`子过程中放置您要测试的代码,在执行结束后,会弹出一个消息框显示代码执行的时间(单位为微秒)。 请注意,`GetSystemTimePreciseAsFileTime`函数在Windows 8及更高版本的操作系统中可用。如果您的操作系统不支持此函数,您可以考虑使用其他方法来获取微秒的时间,例如使用第三方库或插件。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值