C语言工程代码优化--变量优化

一、介绍
c工程代码的质量在实现功能的基础上,主要是以下
1、代码时间复杂度
2、代码空间复杂度
3、代码可读性

这里以通过优化变量来优化代码的时间和空间复杂度

二、 内存介绍
内存主要分为RAM和ROM,一般情况,代码存在ROM,程序运行起来后,变量用RAM;
ROM中:
1、代码段
2、只读数据段,主要是常量、const变量
RAM中:
1、堆
2、栈
3、已初始化读写数据段
C语言在编译连接后,将生成代码段(TEXT),只读数据段(RO Data)和读写数据段(RW Data)
运行时,除了上述三个区域外,还包括未初始化数据段(BBS)区域和堆(heap)区域和栈(Stack)区域

三、关键字介绍
1、auto 存储类是所有局部变量默认的存储类
2、register 存储类,定义存储在寄存器中而不是 RAM 中的局部变量,不能使用一元运算符比如&
3、static 存储类,程序的生命周期内保持局部变量的存在
4、const 修饰变量不可变,变成静态,存放与ROM

四、使用实例
1、在局部高速访问的变量加上,register优化时间
如下面函数访问

void update(void)
{
   register int  miles;
   //---
}

与不加register相比,加上访问更快

2、const使用,优化时间和RAM
正弦波发生函数
1.常规操作,使用数学库产生

#include <math.h>
float sin_sigal(float x)
{
	float ret;
	ret = sin(x*3.14/180);
	return ret;
}

2.const查找表方式
将0-360度的sin值放于数组

const sin_num[360] = {00.8414709848078965 ,0.9092974268256817 ,
0.1411200080598672 ,-0.7568024953079282 ,-0.9589242746631385 ,
-0.27941549819892586 ,0.6569865987187891 ,0.9893582466233818 ,
0.4121184852417566 ,-0.5440211108893698 ,...};

float sin_sigal(int x)
{
	float ret;
	ret = sin(x);
	return ret;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、选择合适的算法和数据结构 2、使用尽量小的数据类型 3、减少运算的强度 (1)查表 (2)求余运算 (3)平方运算 (4)用移位实现乘除法运算 (5)避免不必要的整数除法 (6)使用增量和减量操作符 (7)使用复合赋值表达式 (8)提取公共的子表达式 4、结构体成员的布局 (1)按数据类型的长度排序 (2)把结构体填充成最长类型长度的整倍数 (3)按数据类型的长度排序本地变量 (4)把频繁使用的指针型参数拷贝到本地变量 5、循环优化 (1)充分分解小的循环 (2)提取公共部分 (3)延时函数 (4)while循环和do…while循环 (5)循环展开 (6)循环嵌套 (7)Switch语句中根据发生频率来进行case排序 (8)将大的switch语句转为嵌套switch语句 (9)循环转置 (10)公用代码块 (11)提升循环的性能 (12)选择好的无限循环 6、提高CPU的并行性 (1)使用并行代码 (2)避免没有必要的读写依赖 7、循环不变计算 8、函数 (1)Inline函数 (2)不定义不使用的返回值 (3)减少函数调用参数 (4)所有函数都应该有原型定义 (5)尽可能使用常量(const) (6)把本地函数声明为静态的(static) 9、采用递归 10、变量 (1)register变量 (2)同时声明多个变量优于单独声明变量 (3)短变量名优于长变量名,应尽量使变量名短一点 (4)在循环开始前声明变量 11、使用嵌套的if结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值