求C语言程序:如何获得一个程序运行的时间? 最好带一段简单的代码 新人学不懂 呵呵 谢谢大家啦

求C语言程序:如何获得一个程序运行的时间? 最好带一段简单的代码 新人学不懂 呵呵 谢谢大家啦,第1张

clock()函数,计算代码消耗的cpu时间,一般用处不大

time()函数,获取系统时间,许多依赖于time()计算超时的程序,在修改系统时间后一般都不能正常运行。

因此本人推荐:

windows下:计算绝对时间QueryPerformanceCount/QueryPerformanceFrequency.

cpu脉冲计数/ cpu频率,获得开机以滑尺来的秒数。

当然,这宴州两个函数获得时间精度是很高的(us级别),只是我们一般用不到这么精确。

linux下:

#include <sys/sysinfo.h>

调用sysinfo()获得系统启动以来经历的秒数时间。这个不属于高精度计时。

如果要进行高精度计时,高精度时间,C运行库的gettimeofday().(当然据我估计也是受到系统更改时间的影响)。

用绝对时间判断系统时间有没有被更改,用高精度时间精确计时,二者结合信祥高才是王道。

,0 error 0warning #include <stdio.h>//这里不要忘记加头带侍文蠢档吵件,如果你是蠢搜在VC6.0里面运行的话,如果是Turbo c就不用 #include <math.h>void main() { double a,b,c,disc,x1,x2,p,q//这里面都定义成...

推荐用CString。

比如:

DWORD dwSys1 = 0x22334455

DWORD dwSys2 = 0x34567890

CString str

str.Format("坦备%u\n%u",dwSys1,dwSys2)

MessageBox(NULL, str, NULL, MB_OK)

补充:

不用CString也行,可以使用sprintf等函数。

原型为:

int sprintf( char *buffer, const char *format [, argument] ... )

buffer用于接收结果,format以后的参数类似于printf中的相应参数。

对于上述例子,我们可以这么做:

DWORD dwSys1 = 0x22334455

DWORD dwSys2 = 0x34567890

char *str = new char[256]

sprintf(str,"%u\n%u",dwSys1,dwSys2)

MessageBox(NULL, str, NULL, MB_OK)// 针对不同的头文件,MessageBox参数可能发生变耐枯化

如果要将这些内容复制到数组中,可以使用动态的字符串数组。

比如:

char *strArray = new char*[4]

for(int i=0i<4i++)

{

// 这里做一些复制的工作

strArray[i] = new char[256]

sprintf( …… )

}

// 这里添加你要的其他代码

……

// 然后开始释放内存

for(int j=0j<4j++) delete [] strArray[j]// 释放数组分量对应的让亩毁内存

delete[] strArray// 释放指针数组的内存


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12228145.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存