C++ 打印时间 毫秒级

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 打印时间 毫秒级相关的知识,希望对你有一定的参考价值。

把程序开始运行的时间作为零点,后续每次打印出的时间都是程序开始时间后的计时时间。
效果就是在main函数第一行打印出的时间为0:0:0:000,后续打印出的时间类似于0:0:0:100、0:0:0:200......
求高手点拨一下

#include <stdio.h>
#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++ 打印时间 毫秒级的主要内容,如果未能解决你的问题,请参考以下文章

spark与storm比对与选型

大数据Spark与Storm技术选型

spark同storm的对比

spark同storm的对比

Python获取秒级时间戳与毫秒级时间戳

C++ 打印时间 毫秒级