1.C++程序运行速度与什么有关
一个C++程序的运行,与许多因素相关。比如,硬件CPU和内存,编译器等。 这里,主要是分析程序员可控值的影响因素,从代码的层面分析。
代码和数据是程序的基本元素。因此,数据的类型和数据的处理是影响程序运行速度的主要原因。 比如,选用哪种合适的数据类型(涉及到内存的存储和之后的运算);变量在内存上的分配方式如何(堆或者栈,静态或者动态);程序的处理逻辑如何(是否可以进一步优化,涉及到算法);
2.C++提升程序运行速度的一些方法
a.内存充足的情况下,对于一些变量的内存分配由动态分配内存改为静态分配内存;
b.对于一些数值的数据,整型INT的处理速度远快于浮点型。
c.往磁盘的read或write都比较耗费时间。访问速度:cpu寄存器 > cache > 内存 > 虚拟内存 > 磁盘其它部位
d.数据类型中,能随机(直接)访问的,不用顺序访问。比如,数组是随机访问,vector(向量)是顺序访问的。要根据需要合理使用合适的数据类型,如数组虽然是顺序访问,但因其是顺序存储,对数组中某个元素删除时,后面的元素依次往前移动,把前面的元素覆盖掉。这就多花费了一点时间。
e.对于内存,每个malloc都要对应一个free,每一个new要对应一个delete,每一个new[ ]要对应一个delete[ ];
f.如果程序中,存在多轮的嵌套循环,考虑是否可以优化。
g.函数参数传递时,尽量以传递常引用,代替传值(内置类型等除外,对于内置类型,以及STL的迭代器和函数对象pass-by-value往往更高效)。
|