C 代码优化 1
重要的8 0 -2 0 规则 不要忘记由经验确定的 80-20 规则,它宣称一个典型的程序用 80% 的时间执行 20% 的代码
这是一个重要的规则,因为它提醒你作为一个软件开发者的目标是识别出能全面提升你的程序性能的 20% 的代码
你可以用各种方式无限期地优化你的函数,但除非你将精力集中在正确的函数上,否则就是白白浪费精力
用指针运算代替数组索引 这样做常常能产生又快又短的代码
与数组索引相比,指针一般能使代码速度更快,占用空间更少
使用多维数组时差异更明显
下面的代码作用是相同的,但是效率不一样
数组索引 2
for(;;){ 3
a = array[t++]; 4
指针运算 2
p = array; 3
for(;;){ 4
a = *(p++); 5
} 指针方法的优点是,array 的地址每次装入地址 p 后,在每次循环中只需对 p 增量操作
在数组索引方法中,每次循环中都必须根据 t 值求数组下标的复杂运算
查表(游戏程序员必修课) 一个聪明的游戏大虾,基本上不会在自己的主循环里搞什么运算工作,绝对是先计算好了,再到循环里查表
看下面的例子: 旧代码: 1
long factorial(int i) 2
if (i == 0) 4
return 1; 5
else 6
return i * factorial(i - 1); 7
} 新代码: 1
static long factorial_table[] = {1, 1, 2, 6, 24, 120, 720 /* etc */ }; 2
long factorial(int i) 3
return factorial_table[i]; 5
} 如果表很大,不好写,就