用c语言如何获取系统当前时间的函数?1、C语言中读取系统时间的函数为time(),其函数原型为:\x0d\x0a#include \x0d\x0atime_ttime( time_t * ) ;\x0d\x0atime_t就是long , 函数返回从1970年1月1日(MFC是1899年12月31日)0时0分0秒,到现在的的秒数 。\x0d\x0a2、C语言还提供了将秒数转换成相应的时间格式的函数:\x0d\x0achar * ctime(const time_t *timer); //将日历时间转换成本地时间,返回转换后的字符串指针可定义字符串或是字符指针来接收返回值\x0d\x0astruct tm * gmtime(const time_t *timer); //将日历时间转化为世界标准时间(即格林尼治时间),返回结构体指针可定义struct tm *变量来接收结果\x0d\x0astruct tm * localtime(const time_t * timer);//将日历时间转化为本地时间 , 返回结构体指针可定义struct tm *变量来接收结果\x0d\x0a3、例程:\x0d\x0a#include \x0d\x0avoid main()\x0d\x0a{\x0d\x0atime_t t;\x0d\x0astruct tm *pt ;\x0d\x0achar *pc ;\x0d\x0atime(t);\x0d\x0apc=ctime(t) ; printf("ctime:%s", pc );\x0d\x0apt=localtime(t) ; printf("year=%d", pt-tm_year 1900 );\x0d\x0a}\x0d\x0a\x0d\x0a时间结构体struct tm 说明:\x0d\x0a\x0d\x0astruct tm { \x0d\x0aint tm_sec; /* 秒 _ 取值区间为[0,59] */ \x0d\x0aint tm_min; /* 分 - 取值区间为[0,59] */ \x0d\x0aint tm_hour; /* 时 - 取值区间为[0,23] */ \x0d\x0aint tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */ \x0d\x0aint tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */ \x0d\x0aint tm_year; /* 年份,其值等于实际年份减去1900 */ \x0d\x0aint tm_wday; /* 星期 _ 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */ \x0d\x0aint tm_yday; /* 从每年的1月1日开始的天数 _ 取值区间为[0,365],其中0代表1月1日 , 1代表1月2日,以此类推 */ \x0d\x0aint tm_isdst; /* 夏令时标识符 , 实行夏令时的时候,tm_isdst为正 。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负 。*/ \x0d\x0a};
C语言中怎样测试函数执行时间有4种方法可以达成测算程序运行时间的目的 。
它们分别是使用clock, times, gettimeofday, getrusage来实现的 。
下面就来逐一介绍 , 并比较它们的优劣点 。
系统测试环境:
VirtualBox (Ubuntu 9.10)
gcc version 4.4.1
libc6 2.10.1-0ubuntu16
Core Duo T2500 2GMHz
例程如下:
只要修改第11行的定义值,就可以使用不同的测量方法了 。
#include sys/time.h
#include sys/resource.h
#include unistd.h
#include stdio.h
#include time.h
#define TEST_BY_CLOCK(char)(0x00)
#define TEST_BY_TIMES(char)(0x01)
#define TEST_BY_GETTIMEOFDAY(char)(0x02)
#define TEST_BY_GETRUSAGE(char)(0x03)
#define TEST_METHOD(TEST_BY_GETTIMEOFDAY)
#define COORDINATION_X(int)(1024)
#define COORDINATION_Y(int)(1024)
static int g_Matrix[COORDINATION_X][COORDINATION_Y];
double getTimeval()
{
struct rusage stRusage;
struct timeval stTimeval;
if (TEST_METHOD == TEST_BY_GETTIMEOFDAY)
【c语言获取函数执行时间 c语言获取当前时间函数】{
gettimeofday(stTimeval, NULL);
}
else if (TEST_METHOD == TEST_BY_GETRUSAGE)
{
getrusage(RUSAGE_SELF, stRusage);
stTimeval = stRusage.ru_utime;
}
return stTimeval.tv_sec(double)stTimeval.tv_usec*1E-6;
}
int main()
{
int i, j;
int n = 0;
clock_t clockT1, clockT2;
double doubleT1, doubleT2;
if (TEST_METHOD == TEST_BY_CLOCK)
{
clockT1 = clock();
}
else if (TEST_METHOD == TEST_BY_TIMES)
{
times(clockT1);
}
else if (TEST_METHOD == TEST_BY_GETTIMEOFDAY)
{
doubleT1 = getTimeval();
}
else if (TEST_METHOD == TEST_BY_GETRUSAGE)
{
doubleT1 = getTimeval();
}
for (i = 0; iCOORDINATION_X; i)
{
for (j = 0; jCOORDINATION_Y; j)
{
g_Matrix[i][j] = i * j;
}
}
if (TEST_METHOD == TEST_BY_CLOCK)
{
clockT2 = clock();
printf("Time result tested by clock = .30f\n",(double)(clockT2 - clockT1)/CLOCKS_PER_SEC);
}
else if (TEST_METHOD == TEST_BY_TIMES)
{
times(clockT2);
printf("Time result tested by times = .30f\n", (double)(clockT2 - clockT1)/sysconf(_SC_CLK_TCK));
}
else if (TEST_METHOD == TEST_BY_GETTIMEOFDAY)
{
doubleT2 = getTimeval();
printf("Time result tested by gettimeofday = .30f\n",(double)(doubleT2 - doubleT1));
}
else if (TEST_METHOD == TEST_BY_GETRUSAGE)
{
doubleT2 = getTimeval();
printf("Time result tested by getrusage = .70f\n", (double)(doubleT2 - doubleT1));
}
return 0;
}
1. 使用clock的方法:
clock是ANSI C的标准库函数,关于这个函数需要说明几点 。
首先,它返回的是CPU耗费在本程序上的时间 。也就是说,途中sleep的话,由于CPU资源被释放,那段时间将不被计算在内 。
其次 , 得到的返回值其实就是耗费在本程序上的CPU时间片的数量,也就是Clock Tick的值 。该值必须除以CLOCKS_PER_SEC这个宏值,才
能最后得到ss.mmnn格式的运行时间 。在POSIX兼容系统中,CLOCKS_PER_SEC的值为1,000,000的,也就是
1MHz 。
最后,使用这个函数能达到的精度大约为10ms 。
2. 使用times的方法:
times的用法基本和clock类似 , 同样是取得CPU时间片的数量 , 所不同的是要除以的时间单位值为sysconf(_SC_CLK_TCK) 。
3. 使用gettimeofday的方法:
用gettimeofday直接提取硬件时钟进行运算,得到的结果的精度相比前两种方法提高了很多 。
但是也正由于它提取硬件时钟的原因,这个方法只能计算程序开始时间和结束时间的差值 。而此时系统中如果在运行其他的后台程序,可能会影响到最终结果的值 。如果后台繁忙,系统dispatch过多的话,并不能完全真实反映被测量函数的运行时间 。
4. 使用getrusage的方法:
getrusage得到的是程序对系统资源的占用信息 。只要指定了RUSAGE_SELF,就可以得到程序本身运行所占用的系统时间 。
用C语言,怎么算出主函数调用函数时,该函数的执行时间 。举个例子,谢谢啊 。请高手帮忙int main()
{
int TimeStart = GetTickCount();
Sum();//这个是你要调用的函数
intTimeEnd = GetTickCount();
int Time = TimeEnd - TimeStart;
//Time的值 就是调用Sum()函数所用的时间
}
简单的写了一下,希望能帮到你
C语言求一个程序运行时间C/C中c语言获取函数执行时间的计时函数是clock() 。
所以,可以用clock函数来计算c语言获取函数执行时间的运行一个循环、程序或者处理其它事件到底花c语言获取函数执行时间了多少时间,具体参考代码如下c语言获取函数执行时间:
#include “stdio.h”
#include “stdlib.h”
#include “time.h”
int main( void )
{
longi = 10000000L;
clock_t start, finish;
doubleduration;
/* 测量一个事件持续的时间*/
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- );
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
system("pause");
}
c语言获取函数执行时间的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言获取当前时间函数、c语言获取函数执行时间的信息别忘了在本站进行查找喔 。
推荐阅读
- 手机科幻射击游戏,手机科幻射击游戏第三人称人物都很迷你
- 淘宝图片下载,淘宝图片下载快捷指令
- flutter页面,flutter页面布局
- ios服务器搭建,搭建苹果服务器
- go语言程序执行 go语言可执行文件
- 电脑gis控件在哪里的简单介绍
- 电视坏了怎么存储文件夹,如果电视坏了怎样恢复
- flutter第一次打开白屏,flutter打开原生界面
- ipad看java代码吗 ipad用什么打开java文件