c语言内存操作优化

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

posted on 2020-11-12 11:24  裸睡的猪  阅读(633)  评论(0编辑  收藏  举报