今天阅读了项目经理给的《嵌入式Linux编程规范》,有些问题是以前自己没有注意和没有接触过的,整理了以下3点:
1. 在多重循环中,应将最忙的循环放在最内层。
说明:减少CPU 切入循环层的次数。
示例:如下代码效率不高。
for (col = 0; col < 200; col++)
{
for (row = 0; row < 10; row++)
{
a[row][col] = 0;
}
}
可以改为如下方式,以提高效率。
for (row = 0; row < 10; row++)
{
for (col = 0; col <200; col++)
{
a[row][col] = 0;
}
}
这点在以前的编程中没有注意过,认为把哪个循环放在哪个层次对程序没有影响。
2. 避免循环体内含判断语句,应将判断语句置于循环体外面。
说明:目的是减少判断次数。
示例:如下代码效率稍低。
for (count = 0; count
因为判断语句与循环变量无关,故可如下改进,以减少判断次数。
if (type == REC_AREA)
{
for (i = 0; i < MAX_NUMBER;i++)
{
sum += area[i];
}
}
else
{
for (i = 0; i
以前认为第二种写法有两个循环结构,故采用第一种写法。
3. 某些语句经编译后产生告警,但如果它是正确的,那么应通过某种手段去掉告警信息。
说明:在Borland C/C++中,可用“#pragma warn”来关掉或打开某些告警。
示例:
#pragma warn -rvl // 关闭告警
int expl(int x)
{
// 程序,但无return 语句。
}
#pragma warn +rvl // 打开告警
编译函数examples_fun 时本应产生“函数应有返回值”告警,但由于关掉了此告警信
息显示,所以编译时将不会产生此告警提示。
今天阅读了项目经理给的《嵌入式Linux编程规范》,有些问题是以前自己没有注意和没有接触过的,整理了以下3点: