zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SpringMVC之使用ResponseEntity
    紧随时代的步伐--Java8特性之接口默认方法
    Executor多线程框架
    Jsoup入门
    Echart、Excel、highcharts、jfreechart对比
    JFreeChart入门
    Spring定时任务(@Scheduled)
    Java正则表达式入门基础篇
    Vue.js之入门
    springboot rabbitmq direct exchange和topic exchange 写法上关于路由键的区别
  • 原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/13962972.html
Copyright © 2011-2022 走看看