C++/ C循环语句的效率问题
2016-05-29 13:43
441 查看
循环语句的效率:
C++/ C 循环语句中,f or语句使用频率最高,whi l e语句其次,do语句很少用。提高循环体效率的基本办法是降低循环体的复杂性。
1.在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。
例1:
程序1:
for (row = 0; row<100; row++)
{
for (col = 0; col<5; col++)
{
sum = sum + a[row][col];
}
}
程序2:
for (col = 0; col<5; col++)
{
for (row = 0; row<100; row++)
{
sum = sum + a[row][col];
}
}
分析:程序1低效率,长循环在最外层;程序2高效率,长循环在最内层。
2.如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
程序1:
for (i = 0; i <N; i++)
{
if (condition)
{
DoSomething();
}
else
{
DoOtherthing();
}
}
程序2:
if (condition)
{
for (i = 0; i < N; i++)
{
DoSomething();
}
}
else
{
for (i = 0; i < N; i++)
{
DoOtherthing();
}
}
分析:程序1效率低但程序简洁;程序2效率高但程序不简洁.
补充:
goto语句:能够从多重循环体中咻地一下子跳到外面,用不着写很多次的break语句;由于goto语句存在很多隐患,因此主张少用、慎用goto 语句。
如:
{
{
{
goto error;
}
}
}
error;
本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1766038
C++/ C 循环语句中,f or语句使用频率最高,whi l e语句其次,do语句很少用。提高循环体效率的基本办法是降低循环体的复杂性。
1.在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。
例1:
程序1:
for (row = 0; row<100; row++)
{
for (col = 0; col<5; col++)
{
sum = sum + a[row][col];
}
}
程序2:
for (col = 0; col<5; col++)
{
for (row = 0; row<100; row++)
{
sum = sum + a[row][col];
}
}
分析:程序1低效率,长循环在最外层;程序2高效率,长循环在最内层。
2.如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
程序1:
for (i = 0; i <N; i++)
{
if (condition)
{
DoSomething();
}
else
{
DoOtherthing();
}
}
程序2:
if (condition)
{
for (i = 0; i < N; i++)
{
DoSomething();
}
}
else
{
for (i = 0; i < N; i++)
{
DoOtherthing();
}
}
分析:程序1效率低但程序简洁;程序2效率高但程序不简洁.
补充:
goto语句:能够从多重循环体中咻地一下子跳到外面,用不着写很多次的break语句;由于goto语句存在很多隐患,因此主张少用、慎用goto 语句。
如:
{
{
{
goto error;
}
}
}
error;
本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1766038
相关文章推荐
- c语言:通过指针变量访问整型变量
- c语言:利用指针变量,用函数实现将3个整数按从大到小的顺序输出
- c语言:引用指针变量比较两个整数的大小
- c语言:通过指针变量输出整型数组a的10个元素
- c语言:用结构体变量输出学生的信息,包括学号,姓名,性别。
- c语言:通过指向结构体变量的指针变量输出结构体变量中成员的信息
- c语言:编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果
- c语言:将数组中n个整数按相反顺序存放。
- c语言:用函数的嵌套调用,找4个整数中最大的数。(递推)
- c语言:递归求学生年龄问题
- c语言:用递归方法求n的阶乘
- c语言:Hanoi(汉诺)塔问题,求移动盘子的步骤
- c语言:模拟实现库函数的atoi函数,将字符串转换成整数
- c语言:输入10个数,输出值最大的元素和该数是第几个数。(数组元素作函数实参)
- c语言:在3*4的矩阵中,求元素的最大值
- c语言:用fgetc函数从键盘逐个输入字符,用fputc函数写到磁盘文件
- c语言 谭浩强 一维数组内放10个学生成绩 全局变量写一个函数 最高分、最低分、平均分
- c语言:利用静态变量static,输出1到5的阶乘值
- c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?
- c语言:建立简单的静态链表,它由3个学生数据的结点组成,要求输出各结点的数据