可以使用空间换时间。如果你能缓存经常用的数据而不是重新计算,这便能更快的访问。比如sine和cosine查找表,或者伪随机数。
尽量不在循环中使用++和–。例如:while(n–){},这有时难于优化。
减少全局变量的使用。
除非像声明为全局变量,使用static修饰变量为文件内访问。
尽可能使用一个字大小的变量(int、long等),使用它们(而不是char,short,double,位域等)机器可能运行的更快。
不使用递归。递归可能优雅而简单,但需要太多的函数调用。
不在循环中使用sqrt开平方函数,计算平方根非常消耗性能。
一维数组比多维数组更快。
编译器可以在一个文件中进行优化-避免将相关的函数拆分到不同的文件中,如果将它们放在一起,编译器可以更好的处理它们(例如可以使用inline)。
单精度函数比双精度更快。
浮点乘法运算比浮点除法运算更快-使用val*0.5而不是val/2.0。
加法操作比乘法快-使用val+val+val而不是val*3。
put()函数比printf()快,但不灵活。
使用#define宏取代常用的小函数。
二进制/未格式化的文件访问比格式化的文件访问更快,因为程序不需要在人为可读的ASCII和机器可读的二进制之间转化。如果你不需要阅读文件的内容,将它保存为二进制。
如果你的库支持mallopt()函数(用于控制malloc),尽量使用它。MAXFAST的设置,对于调用很多次malloc工作的函数由很大的性能提升。如果一个结构一秒钟内需要多次创建并销毁,试着设置mallopt选项。
|