1. 使用乘法代替除法。如果不需要较高的精度,使用float代替double。
2. 如果一个函数内部会频繁地使用全局变量,可以使用局部变量作为全局变量的拷贝。
3. 栈总是保持对齐在4字节边界(32位CPU),局部变量定义为char或short并不能带来存储空间上的节省,且会降低变量访问速度。因此,在不修改对齐方式的情况下,尽量将局部变量定义为32位。
4. 需要使用结构体作为函数参数时,使用指针代替。
5. 需要时,使用 for( i = 10; i--; ) { ... } 代替 for( i = 0; i < 10; i++) { ... }
6. 能够使用寄存器传递的函数参数个数是有限制的。例如,4个以内的函数参数可能被保持在寄存器中,多余的参数会被压入栈。
7. 尽量安排经常被调用的函数成为叶子函数。叶子函数是指不再调用其他函数的函数,包括C语言库函数。
8. 提高文件访问速度的主要办法有两个:一是采用内存映射文件,二是使用内存缓冲。
使用内存缓冲区方法的好处主要是便于移植,占用内存少,便于硬件实现等。下面是读取文件的C伪码:
int Len; BYTE buffer[8192]; ASSERT(buffer==NULL); If buffer is empty{ Len=read(File,buffer,8192); If(len==0) No data and exit; }
如果要使用内存映射文件,必须:
1).处理的文件比较的小,
2).处理的文件很大,但是运行环境内存也很大,并且一般在运行该程序的时候不运行其他消耗内存大
的程序,同时用户对速度有特别的要求,而且对内存占用没有什么要求。
如果以上两个条件不满足的时候,建议使用内存缓冲区的办法。
参考引用:
C程序优化之路--I/O篇
http://blog.chinaunix.net/uid-21765995-id-1815641.html
C语言常用内存优化总结
https://blog.csdn.net/u010383519/article/details/89883650