以下两个程序哪个的执行效率高,并解释为什么。

zzz654321 2003-10-19 04:20:48
以下两个程序哪个的执行效率高,并解释为什么。
a)
extern int fool(void);
int main()
{
int i;
for(i=0;i<10000;i++) fool();
return i;
}

b)
extern int fool(void);
int i;
int main()
{
for(i=0;i<10000;i++) fool();
return i;
}
...全文
127 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsb1107 2003-10-23
  • 打赏
  • 举报
回复
我认为第一个好些.第一,从速度上来说,主程序和全局变量间通信时耗事大于局部变量.第二,少用全局变量,可减少各模块间的相互耦合.
pxwzd123 2003-10-23
  • 打赏
  • 举报
回复
无语
freebird1020 2003-10-23
  • 打赏
  • 举报
回复
个人认为第一个函数的效率高一些。
因为只有局部自动变量和形式参数可以作为寄存器变量,其他(如全局变量)不行。
为了提高效率,C语言允许将局部变量的值放到CPU的寄存器总,需要的时候直接从寄存器取出参加运算,而不需要从内存中取。
所以,应该是第一个程序的效率高一些。
DESL 2003-10-19
  • 打赏
  • 举报
回复
a)
extern int fool(void);
int main()
{
int i;
for(i=0;i<10000;i++) fool();
return i;
}

b)
extern int fool(void);
int i;
int main()
{
for(i=0;i<10000;i++) fool();
return i;
}
个人认为第二个比较好一些...因为写程序不可能就写几行几十行..几百行...
而是几千行几万行...定义一个变量应该从大局的方面来想,不能单单从效率来考率,
有的时候,为了能让同组或者模块成员看懂或读懂每一个模块都是有项目分析者定义
指定的变量是全局还是局部变量,有的时候明知道定义全局的好,可是为了整个程序
还是要定义局部变量的...有时你不注意会影响整个程序的编辑带来不必要的错误..
.你这个问题却实应该注意...
我个人认为定义第二个好是因为.我想当真正工做时每个人只能分到很小的一个模
块去做或者是某个功能..不可能要定义哪么多全局变量..这样会和其它程序员编辑
有冲突。
dreamfly8848 2003-10-19
  • 打赏
  • 举报
回复
同意ttlb(小鸟___ttlb___)
廖雪峰 2003-10-19
  • 打赏
  • 举报
回复
全局变量也不见得会优化成register

最好不用全局变量

局部变量也要把范围缩到最小如
for(int i=0; i<100; i++)
{...}

要优化就用
inline int fool();
gwenxia 2003-10-19
  • 打赏
  • 举报
回复

我觉得前者的程序应该会好一点,从软件程序的角度来说,它可以减少函数之间的关联.
ttlb 2003-10-19
  • 打赏
  • 举报
回复
不过这也不能肯定,可能会跟编译器有关吧。
ttlb 2003-10-19
  • 打赏
  • 举报
回复
同意Andy84920(你也不懂),
对于一般的对象,
for( int i=1; i<10000; i++)
fool();
效率最高。
ppgo 2003-10-19
  • 打赏
  • 举报
回复
这有意义么?
Andy84920 2003-10-19
  • 打赏
  • 举报
回复
for( int i=1; i<10000; i++)
fool();

这样效率最高吧!
hcj2002 2003-10-19
  • 打赏
  • 举报
回复
我认为两者的效率是一样的。
fenghuangling 2003-10-19
  • 打赏
  • 举报
回复
个人认为前者更好,它尽可能多地将变量定义为局部变量,这样有利于增强各函数模块的凝聚力,减少与外界的关联。这种模块化程序设计,能提高各函数的执行效率和他们的可移植性
  • 打赏
  • 举报
回复
如果有区别的话,那么应该是后面的那一个,因为编译器有可能对他进行优化,使其变成register类型的,但是前面的那一个应该是不会的

这只是我的一种猜想,不对的话。。。。。呵呵
xiaohyy 2003-10-19
  • 打赏
  • 举报
回复
一样的,main函数返回,怎个程序就退出了。

在全局和main中定义i没多大区别。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧