搜索算法
1.地图寻路问题(A,A*,IDA*)
2.博弈问题(Alpha-Beta剪枝,SSS*,MemSSS*)
职能算法
1.遗传算法
2.模拟退火
3.禁忌搜索
4.人工神经网络
汇编优化:
能用整数,则尽量不用浮点数;
循环展开技术(比如100次降到50次):由于现代CPU具有分支预测技术,循环展开增加了代码量,更多占用CPU内部一级代码高速缓存的空间,循环展开远远不如原来有效。
局部变量在堆栈中,这样可以重复使用内存,当一块内存被反复读写,其数据就会存在CPU的内部一级缓存中,访问速度非常快。而零散的静态变量则没有这个优势。内存同CPU内部缓存的数据交换,往往成为程序的速度瓶颈。
除2的整数幂可以被优化成移位操作,但是我们并不主张把n/8写成n>>3,因为现代编译器会帮你做这件事。这里需要注意的是:如果你知道n肯定是个正数,而n又被声明成int时,写成(unsigned)n/8是有利于编译器帮你优化的。因为对于一个有符号的数字除以8并不完全等价于右移3位。
实际上,即使除数不是2的整数幂,编译器的优化依然会消除除法,变成一次乘法加一次移位操作。让编译器有优化余地的唯一前提就是,让除数是一个常数,除了直接写除数,也可以用const int来定义。
对于浮点运算,我们有更多的方法减少除法的运算次数(以下方法在特定条件下,使用一些技巧也同样适用于
版权声明:本文为Image_Graphics原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。