高效使用C/C++变量
来源:互联网 发布:bootstrap less源码 编辑:程序博客网 时间:2024/05/21 06:28
高效使用C/C++变量
1、 由于变量类型而引效率问题
在加法、减法以及乘法运算中,对整型的操作效率明显高于针对浮点型和双精度类型的操作效率,因此,在循环中运用整型运算代替浮点型和双精度类型,将会提高程序的效率。
例子:
双精度类型运算:
double s = 2.5;
for(int i = 0; i < 100; i++)
{
s *= 3;
}
转化为整型后的运算:
int s1 = 25;
double s2;
for(int i = 0; i < 100; i++)
{
s1 *= 3;
}
s2 = s1/10.0;
2、 由于重复定义和释放变量而引起的效率问题
定义和释放变量同样需要引起开销,尤其在循环中重复的定义和释放变量将影响程序的内存和性能。因此,将循环中重复定义和释放的变量移到循环的外面,将会提高程序的效率。
变量定义在循环体内部:
for(int i = 0; i < 100; i++)
{
int k = 0;
if(a[i] > a[i+1])
{
k = a[i];
a[i] = a[i+1];
a[i+1] = k;
}
}
变量定义在循环体外部:
int k = 0;
for(int i = 0; i < 100; i++)
{
if(a[i] > a[i+1])
{
k = a[i];
a[i] = a[i+1];
a[i+1] = k;
}
}
3、 由于重复调用函数而引起的效率问题
调用函数将造成较大的开销,在循环中重复调用同一个函数将造成较大的浪费,因此,创建局部变量,在循环体外一次调用函数并赋值给局部变量,在循环体内重复使用局部变量,将提高程序效率.
循环体内重复调用函数:
int ArraySum(Array myArray)
{
int s = 0;
for(int i = 0; i < myArray.Size(); i++)
{
s += myArray[i];
}
return s;
}
循环体外调用函数:
int ArraySum(Array myArray)
{
int s = 0;
int k = myArray.Size();
for(int i = 0; i < k; i++)
{
s += myArray[i];
}
return s;
}
4、 由于重复使用成员变量而引起的效率问题
因为要使用this指针获取成员变量的基地址,故存取成员变量的时间一般是存取局部变量的二倍;因而,可以创建局部变量,在循环体外一次赋值,循环体内重复使用,将提高程序效率。
class Array
{
int size;
int array[100];
};
重复使用成员变量:
int Array::Sum()
{
int s = 0;
for(int i = 0; i < size; i++)
{
s += array[i];
}
return s;
}
使用局部变量代替成员变量:
int Array::Sum()
{
int s = 0;
int k = size;
for(int i = 0; i < k; i++)
{
s += array[i];
}
return s;
}
- 高效使用C/C++变量
- 高效的C编程-局部变量的使用
- 如何高效使用C语言
- object-c 变量使用
- object-c 变量使用
- 如何高效使用SQLite .net (C#)
- 如何高效使用SQLite .net (C#)
- 《Effective C++》读书笔记之const高效使用
- 如何高效使用SQLite事务 .net (C#)
- 如何高效使用SQLite .net (C#)
- 如何高效使用SQLite .net (C#)
- [C++]高效使用容器的一些建议
- [C++]高效使用迭代器的一些建议
- object-c 变量使用 关键字
- C语言变量的使用
- C 变量
- c 变量
- C++:变量
- 写时拷贝技术与共享节
- 堆的使用
- C/C++中类的存储方式
- List 和 ArrayList 区别
- C++内存区域
- 高效使用C/C++变量
- 函数的效率
- 基本编程语句的效率特性
- JSP页面四大操作访问MySQL数据库,相对应的sql语句
- 软件测试工具
- 甘特图编写完成
- IoGetDriverObjectExtension反汇编码及伪码
- silverlight是什么?
- 完成端口