- 论坛徽章:
- 0
|
to smalloc (留级生): 在shell下直接调用果然不耗时,目前的程序是在脚本自动启动的。这可能是条很重要的线索。
to linyunxian: 头文件没什么特别的地方,链接命令如下:
$(LMFILE) : $(LIBOBJS)
@$(ECHO) "--- Building $@"
$(VERB)$(RM) $@
$(VERB)$(CXX) $(LDOUT) -static $(LIBOBJS) $(LDFLAGS) $(LMLIBS)
to new_learner:反汇编,没玩过,先研究下。
to accessory: func_a()不是空函数,它耗时很长,所以用二分法定位,结果发现即使在入口处直接return也耗时很长.
代码如下:
int main(int argc , char * argv[])
{
char logbuf1[1*1024]={0};
char logbuf2[1*1024]={0};
memset(logbuf1,0,sizeof(logbuf1));
memset(logbuf2,0,sizeof(logbuf2));
Display_Now_Time_In_UserSpace(logbuf1);
g_Message(); /*出问题的地方,耗时特长约3ms*/
Display_Now_Time_In_UserSpace(logbuf2);
printf("%s\n",logbuf1);
printf("%s\n",logbuf2);
sleep(5);
}
void Display_Now_Time_In_UserSpace(char* timeStr)
{
struct timeval tv; struct tm* timeData; unsigned int seconds,micros,usecs; char buf[32];
gettimeofday(&tv, (struct timezone*)0);
seconds = ((unsigned long)tv.tv_sec) & 0xFFFFFFFFUL;
micros = (((unsigned long)tv.tv_usec) & 0xFFFFFFFFUL)/1000;
usecs = (((unsigned long)tv.tv_usec) & 0xFFFFFFFFUL)%1000;
sprintf(timeStr, "%d.%03d.%03d", seconds,micros,usecs);
}
void g_Message()
{
return;
}
输出的结果是:
9.299.659
9.302.145 |
|