提升程序运行效率的小tips

  1. 认识到内存别名的存在
  2. 消除循环的低效率
  3. 减少过程调用
  4. 消除不必要的内存引用

消除循环的低效率

为了避免不必要的扯蛋和浪费时间,只挑选有必要的和不破坏代码可读性的地方进行学习

循环优化指南:
如果循环中有要执行多次的值,它又是固定的,最好一次就把它算出来
例如,

for (int i = 0; i < strlen(s); i ++)
{
    
    
	...
}

就不是一个好的代码

int length = strlen(s);
for (int i = 0; i < length; i ++)
{
    
    
	...
}

就是一个好代码

这种优化叫做代码移动

编译器会很小心,它不会做任何会改变代码执行结果的优化,所以,程序员必须显式地帮编译器完成代码移动

减少过程调用

过程调用会带来很大的开销
所以要尽量减少过程调用
废话

要在程序的模块性和高性能之间进行精妙的抉择

消除不必要的内存引用

据说这一步能产生显著的性能提升
其实是这么回事:

for (int i = 0; i < length; i ++)
	*dest += data[i];

这一句里面会产生很多的内存引用,基本上每一次循环都要对*dest进行一次内存引用
改成这样子就可以极大地改善运行速度

for (int i = 0; i < length; i ++)
	sum += data[i];
*dest = sum;

使用一个临时变量存储运行结果,避免不必要的内存引用,提高运行效率
就是这么简单,小学生都会的东西

为什么编译器不会自动产生这种优化呢?
由于内存别名的存在,两个函数可能会有不一样的行为
因此要手动进行这种优化

猜你喜欢

转载自blog.csdn.net/weixin_45206746/article/details/113705507