+ -
当前位置:首页 → 问答吧 → 工作这么多年,遇到的最诡异的问题: 调用空函数居然很耗时!!!

工作这么多年,遇到的最诡异的问题: 调用空函数居然很耗时!!!

时间:2010-10-06

来源:互联网

int main() /*在文件main.c中*/
{
  记录当前时间到buffer1;
  func_a(); /*调用func_a函数,后面打印的时间显示耗时3ms,而改为调用func_b函数,基本不耗时,在A.c中再写个类似的空函数func_aa(),此处改为调用func_aa函数,同样耗时3ms左右,在B.c中再写个类似的空函数func_bb(),此处改为调用func_bb函数,同样不耗时.确认记录时间的方法没有问题,也确定func_命名的函数被调用了(如果增加打印是可以打印出来的)*/
  记录当前时间到buffer2;
  打印buffer1;
  打印buffer2;
  return 0;
}

void func_a() /*在文件A.c中*/
{
  return;
}

void func_b() /*在文件B.c中*/
{
  return;
}

CPU是powerpc,由于实际上func_a()不会直接return,而是要干事情的,所以耗时就更多了,超过了3ms,这个时间无法接受,也不可能把A.c中的东西都挪到B.c中去,因为很大很大。哪位牛人能帮忙搞定这个问题呀?

作者: eagerbever_m   发布时间: 2010-10-06

回复 eagerbever_m


    3ms这么长?调度一次在10ms吧
建议你A。B 2个程序在shell里穿插,重复乱着连执行。看符合上面的规律不?

作者: smalloc   发布时间: 2010-10-06

呵呵,这样的现象挺有意思。
要不单独做一个测试用例?

A.c B.c 的头文件是怎么样的?
链接命令又是怎么样的?

作者: linyunxian   发布时间: 2010-10-06