C++ 打印时间 毫秒级
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 打印时间 毫秒级相关的知识,希望对你有一定的参考价值。
把程序开始运行的时间作为零点,后续每次打印出的时间都是程序开始时间后的计时时间。
效果就是在main函数第一行打印出的时间为0:0:0:000,后续打印出的时间类似于0:0:0:100、0:0:0:200......
求高手点拨一下
#include <sys/time.h>
long getCurrentTime()
struct timeval tv;
gettimeofday(&tv,NULL);
return tv.tv_sec * 1000 + tv.tv_usec / 1000;
int main()
printf("c/c++ program:%ld\n",getCurrentTime());
return 0;
这个就是当前的毫秒值。至于你什么时候取,就看你自己了。
你说的这种情况,你可以在main的时候读取一个初值,然后再后续读取出来的值减去前面这个初值就ok了。 参考技术A
写一个时间类,调用系统函数clock()(返回程序开始到调用处经历的时间,单位毫秒)求程序执行的时间,参考下面程序:
#include<iostream>#include<ctime>
using namespace std;class Time
public:
Time()
void setTime(unsigned int t);
void print()const;
private:
unsigned int h,m,s,ms;
;
void Time::setTime(unsigned int t)
ms=t%1000;
s=t/1000%60;
m=t/1000/60%60;
h=t/1000/60/60;
void Time::print()const
cout<<h<<":"<<m<<":"<<s<<":"<<ms<<endl;
int main()
clock_t t1;
t1=clock();//开始时间
Time t;
while(1)
t.print();
for(int i=0;i<5000000;i++);
//system("cls");//若不要则是输出换行,为了测试方便加上该语句
t1=clock();
t.setTime(t1);
return 0;
本回答被提问者和网友采纳 参考技术B 用 clock() 函数就可以了。
毫秒转 时分秒毫秒 你可以自己添加,不难。
#include <windows.h>
#include <stdio.h>
#include <time.h>
main()
clock_t tick1,tick2;
int i,j,k;
double dt;
tick1=clock(); //ms
for (i=0;i<1000;i++) for (j=0;j<1000;j++) for (k=0;k<100;k++) ;
// Sleep(2000);
tick2=clock();
dt = (double) (tick2 - tick1);
printf("==============\nexample_dt_ms:\n");
printf("dt = %lf ms\n",dt);
===========
高精度毫秒级时间计算可用下面方法(MS VC++ 6.0编译器):
void accurate_dt_ms()
LARGE_INTEGER nFreq;
LARGE_INTEGER nBeginTime;
LARGE_INTEGER nEndTime;
int executionTime;
double dt,d_freq,d_begin_t,d_end_t;
// Start of time interval
QueryPerformanceFrequency(&nFreq);
d_freq = (double) nFreq.QuadPart;
QueryPerformanceCounter(&nBeginTime);
// Any code
// ...
Sleep(2000);
// End of time interval
QueryPerformanceCounter(&nEndTime);
// time interval in ms
executionTime = (nEndTime.QuadPart - nBeginTime.QuadPart) * 1000 / nFreq.QuadPart;
dt = (double) ((nEndTime.QuadPart - nBeginTime.QuadPart) * 1000) / d_freq;
printf("==============\naccurate_dt_ms:\n");
printf("dt=%d in ms or dt=%lf ms\n", executionTime,dt);
参考技术C GetTickCount函数返回从操作系统启动所经过的毫秒数,它的返回值是DWORD。
该函数头文件 windows.h
程序启动时用GetTickCount函数获得一个毫秒级的计数,
在需要的时候再调用一次该函数并减去上一次的计数,
最后将结果格式化输出就OK了。
供你参考。
Linux之C++毫秒级计时方法
C++11 提供的标准的”最佳计时方法“的代码
参考:std::chrono::duration_cast - cppreference.com
#include <iostream>
#include <chrono>
void f()
std::this_thread::sleep_for(std::chrono::seconds(1));
int main()
auto t1 = std::chrono::high_resolution_clock::now();
f();
auto t2 = std::chrono::high_resolution_clock::now();
// 浮点持续时间:不需要 duration_cast
std::chrono::duration<double, std::milli> fp_ms = t2 - t1;
// 整数持续时间:需要 duration_cast
auto int_ms = std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1);
// 将整数持续时间转换为更短时间单位的整数持续时间:
// 不需要 duration_cast
std::chrono::duration<long, std::micro> int_usec = int_ms;
std::cout << "f() took " << fp_ms.count() << " ms, "
<< "or " << int_ms.count() << " whole milliseconds "
<< "(which is " << int_usec.count() << " whole microseconds)" << std::endl;
以上是关于C++ 打印时间 毫秒级的主要内容,如果未能解决你的问题,请参考以下文章