有时候在需要在开发板,对不同类类型的定义测试程序的运行时间,特别是在开发板不支持硬浮点只
有软浮点的情况下, 对具有大量浮点运算的程序来是说是有必要考虑浮点运算运行效率对程序的影响。在
linux系统下,对时间函数和结构的应用主要是在time.h中,可以通过man time.h联机查看其文件中的结
构和函数的用法,示例代码如下
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
#define _INT
int main(int argc, char *argv[])
{
#ifdef _INT
int i=0;
int j=0;
#else
float i=0.0f;
float j=0.0f;
#endif
int conut_1=0, conut_2=0;
double time_diff;
time_t time_start;
time_t time_end;
time_t nowTime;
time_t nowEnd;
struct tm *timenow;
struct tm *timeend;
struct timeval tvstart;
struct timeval tvend;
int tm_sec_start;
int tm_sec_end;
int sec;
time(&nowTime);
timenow = localtime(&nowTime);//获取系统时间
tm_sec_start=timenow->tm_sec;
printf("local time is %s\n",asctime(timenow));//输出系统时间
printf("tm_sec_start=%d\n",tm_sec_start);
gettimeofday(&tvstart,NULL);
time_start = clock();
while(conunt_1 < 100000 )
{
for (conut_2; conut_2 < 10000;conut_2++)
{
i++;
#ifdef _INT
j = 2;
#else
j =10.0f;
#endif
i=(i * j+ j) / j;
}
}
time_end = clock();
time_diff = (double)(time_end - time_start)/CLOCKS_PER_SEC; //循环运行的时间
printf("time_diff=%f\n",time_diff);
gettimeofday(&tvend,NULL);
sec =(tvend.tv_sec - tvstart.tv_sec)+(tvend.tv_usec - tvstart.tv_usec)/1000000;
time(&nowTime);
timenow = localtime(&nowTime);
tm_sec_end=timenow->tm_sec;
printf("local time is end%s\n",asctime(timenow));
printf("tm_sec_end=%d\n",tm_sec_end);
printf("sec=%d\n",sec);
return 0;
}
有软浮点的情况下, 对具有大量浮点运算的程序来是说是有必要考虑浮点运算运行效率对程序的影响。在
linux系统下,对时间函数和结构的应用主要是在time.h中,可以通过man time.h联机查看其文件中的结
构和函数的用法,示例代码如下
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
#define _INT
int main(int argc, char *argv[])
{
#ifdef _INT
int i=0;
int j=0;
#else
float i=0.0f;
float j=0.0f;
#endif
int conut_1=0, conut_2=0;
double time_diff;
time_t time_start;
time_t time_end;
time_t nowTime;
time_t nowEnd;
struct tm *timenow;
struct tm *timeend;
struct timeval tvstart;
struct timeval tvend;
int tm_sec_start;
int tm_sec_end;
int sec;
time(&nowTime);
timenow = localtime(&nowTime);//获取系统时间
tm_sec_start=timenow->tm_sec;
printf("local time is %s\n",asctime(timenow));//输出系统时间
printf("tm_sec_start=%d\n",tm_sec_start);
gettimeofday(&tvstart,NULL);
time_start = clock();
while(conunt_1 < 100000 )
{
for (conut_2; conut_2 < 10000;conut_2++)
{
i++;
#ifdef _INT
j = 2;
#else
j =10.0f;
#endif
i=(i * j+ j) / j;
}
}
time_end = clock();
time_diff = (double)(time_end - time_start)/CLOCKS_PER_SEC; //循环运行的时间
printf("time_diff=%f\n",time_diff);
gettimeofday(&tvend,NULL);
sec =(tvend.tv_sec - tvstart.tv_sec)+(tvend.tv_usec - tvstart.tv_usec)/1000000;
time(&nowTime);
timenow = localtime(&nowTime);
tm_sec_end=timenow->tm_sec;
printf("local time is end%s\n",asctime(timenow));
printf("tm_sec_end=%d\n",tm_sec_end);
printf("sec=%d\n",sec);
return 0;
}