概述
#include <time.h>
#include <stdio.h>
#include <sys/time.h>
void printnow(){
static unsigned long long time=0;
timeval tm;
gettimeofday(&tm,NULL);
if(time !=0)
printf("cost time = %llun",tm.tv_sec*1000000+tm.tv_usec - time);
time = tm.tv_sec*1000000+tm.tv_usec;
}
time_t GetTime(int year, int month, int day, int hour, int minute, int second)
{
tm stTM;
stTM.tm_sec = second;
stTM.tm_min = minute;
stTM.tm_hour = hour;
stTM.tm_mday = day;
stTM.tm_mon = month - 1;
stTM.tm_year = year - 1900;
return mktime(&stTM);
}
time_t GetTime_2(int year, int month, int day = 1, int hour = 0, int minute = 0, int second = 0)
{
static __thread int iyear=0;
static __thread int imonth=0;
// static __thread int iday=0;
static __thread unsigned long long time=0;
if(year!=iyear||imonth!=month){//{||iday!=day){
tm stTM;
stTM.tm_sec = 0;//second;
stTM.tm_min = 0;//minute;
stTM.tm_hour = 0;//hour;
stTM.tm_mday = 1;//day;
stTM.tm_mon = month - 1;
stTM.tm_year = year - 1900;
time = mktime(&stTM);
iyear = year;
imonth = month;
// iday = day;
}
return time+((((day - 1)*24+hour)*60+minute)*60)+second;
}
int main()
{
int count = 10000;
time_t m_tNow ;
time_t time1,time2;
m_tNow = time(0);
tm stTM;
localtime_r ( &m_tNow, &stTM );
printf("loop count:%dn",count);
printnow();
for(int i = 0;i<count;i++){
time1 = GetTime(stTM.tm_year + 1900,stTM.tm_mon + 1,stTM.tm_mday,stTM.tm_hour,stTM.tm_min,stTM.tm_sec);
}
printnow();
for(int i =0;i<count;i++){
time2 = GetTime_2(stTM.tm_year + 1900,stTM.tm_mon + 1,stTM.tm_mday,stTM.tm_hour,stTM.tm_min,stTM.tm_sec);
}
printnow();
printf("GetTime() result:%lun",time1);
printf("GetTime_2() result:%lun",time2);
return 0;
}
运行结果
loop count:10000 cost time = 25699 cost time = 115
最后
以上就是独特期待为你收集整理的mktime函数优化方案的全部内容,希望文章能够帮你解决mktime函数优化方案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复