C/C++程序计时函数

在C/C++中有可以直接测试程序运行时间的函数,在<time.h>/<ctime>头文件中,非常方便和实用。

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:clock_t clock(void) ;

简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型,clock_t实质是头文件中long数据类型类型定义的一个代称。使用计时很简单,只要在程序想计时的地方放入一个clock()函数,另外在结束地方放置一个clock()函数,两个返回值的差即是程序消耗时间。但是该函数计时是以毫秒(ms)为单位的,也就是没过千分之一秒加一,所以需要除以一个常量1000才是以秒计时的,一般使用头文件中声明好的常量CLOCKS_PRE_SEC(即1000)。

测试程序如下:

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
clock_t start,end;
 
int main(){
    start=clock();        //程序开始计时
    int ans=0;
    for(int i=1;i<=1e8;i++)
        ans++;
    end=clock();        //程序结束用时
    double endtime=(double)(end-start)/CLOCKS_PER_SEC;
    cout<<"Total time:"<<endtime<<endl;        //s为单位
    cout<<"Total time:"<<endtime*1000<<"ms"<<endl;    //ms为单位
    system("pause");
    return 0;
}

注意:用double强转是为了更精确,不然不足1秒的会显示0s。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中进行程序计时可以使用`<chrono>`头文件中的`high_resolution_clock`和`time_point`来实现。具体实现步骤如下: 1. 在程序开始前,定义一个`time_point`类型的变量`start_time`和`end_time`。 2. 在程序执行需要计时的代码前,通过`high_resolution_clock::now()`获取当前时间,并将其赋值给`start_time`。 3. 在程序执行完需要计时的代码后,再次通过`high_resolution_clock::now()`获取当前时间,并将其赋值给`end_time`。 4. 计算程序执行时间,可以使用`duration_cast`函数将时间差转换为秒、毫秒、微秒等。 下面是一个示例代码: ```c++ #include <iostream> #include <chrono> using namespace std; using namespace std::chrono; int main() { // 定义两个时间点 time_point<high_resolution_clock> start_time, end_time; // 获取当前时间并赋值给start_time start_time = high_resolution_clock::now(); // 执行需要计时的代码 for (int i = 0; i < 100000000; i++) { int j = i * 2; } // 获取当前时间并赋值给end_time end_time = high_resolution_clock::now(); // 计算程序执行时间并输出 auto duration = duration_cast<milliseconds>(end_time - start_time); cout << "程序执行时间:" << duration.count() << "毫秒" << endl; return 0; } ``` 上述代码中,我们使用`high_resolution_clock`获取当前时间,并将其赋值给`start_time`和`end_time`,然后计算时间差并输出。注意,我们使用`duration_cast`将时间差转换为毫秒,并使用`count()`方法获取时间差的数值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值