Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2926963
  • 博文数量: 523
  • 博客积分: 11908
  • 博客等级: 上将
  • 技术积分: 5475
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-03 15:50
文章分类

全部博文(523)

文章存档

2019年(3)

2013年(4)

2012年(71)

2011年(78)

2010年(57)

2009年(310)

分类: C/C++

2009-07-08 00:02:03

循环语句的效率

C++/C 循环语句中,for 语句使用频率最高,while 语句其次,do 语句很少用。本

节重点论述循环体的效率。提高循环体效率的基本办法是降低循环体的复杂性。

􀁺 【建议4-4-1】在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的

循环放在最外层,以减少CPU 跨切循环层的次数。例如示例4-4(b)的效率比示例

4-4(a)的高。

for (row=0; row<100; row++)
{
for ( col=0; col<5; col++ )
{
sum = sum + a[row][col];
}
}

示例4-4(a) 低效率:长循环在最外层

 

for (col=0; col<5; col++ )
{
for (row=0; row<100; row++)
{
sum = sum + a[row][col];
}
}

示例4-4(b) 高效率:长循环在最内层

 

【建议4-4-2】如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到

循环体的外面。示例4-4(c)的程序比示例4-4(d)多执行了N-1 次逻辑判断。并且

由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环

进行优化处理,降低了效率。如果N 非常大,最好采用示例4-4(d)的写法,可以提

高效率。如果N 非常小,两者效率差别并不明显,采用示例4-4(c)的写法比较好,

因为程序更加简洁。

for (i=0; i{
if (condition)
DoSomething();
else
DoOtherthing();
}

表4-4(c) 效率低但程序简洁


if (condition)
{
for (i=0; iDoSomething();
}
else
{
for (i=0; iDoOtherthing();
}
表4-4(d) 效率高但程序不简洁

阅读(1545) | 评论(0) | 转发(0) |
0

上一篇:不同变量与0值的比较

下一篇:类中的常量

给主人留下些什么吧!~~