编程技巧---节省空间
数据空间技术
----如何减少程序所需要数据的存储空间的技术
1,不存储,重新计算。
如果我们在需要某一个给定对象的任何时候,都对其进行重新计算而不保存,就可以减少该对象所需的空间。该方法用计算时间换空间,只使用于需要存储的对象可以根据其描述重新计算得到的情况。
2,稀疏数据结构
例1:稀疏矩阵的的存储(很多个0,或其他相同的项)。
例2:使用指针来共享大型对象可以消除存储同一对象的众多副本所需要的开销(数组参数的传递),程序员在修改共享对象时必须小心谨慎地确保该对象的所有拥有者都希望修改。
例3:存储1970-2070之间的日历,并不需要存储每一年不同的日历。而只需要给出14个标准日历(对任意一年,1月1日星期几只有7种可能,闰年还是非闰年只有两种可能)以及一个为1970-2070年每一年提供日历编号的表。
3,数据压缩
通过压缩的方式对对象进行编码,以减少存储空间。
例1:使用标准的压缩算法
例2:根据特定的应用环境,如10进制数字串的处理,可将两个10进制数压缩到一个字节存储。
编码:c = a * 10 + b;
解码:a = c / 10; b = c % 10;
4, 分配策略
动态按需分配,按照需求量来请求数据空间,而不是预先分配。
5,垃圾回收
对废弃的存储空间进行回收再利用,从而那些不用的位就可以重新使用了。
例1:对某些字段没有使用的位进行再利用。如linux基树实现中利用整型地址值(能被4整除)的低两位。
数据空间技术
----如何减少程序代码所占的存储空间
1,函数定义
通过用函数替换代码中的常见模式,减少了空间需求,并增加了清晰性。
微软删除了很少使用的函数,将它的整个windows压缩为更加紧凑的Windows CE,使其在具有更小内存的“移动计算平台”上运行。
2,解释程序
在图形程序中,使用4个字节的解释程序替换一长行的程序文本。
使用“格式信函编程的”的解释程序。
3,翻译成机器语言
将源语言转换成机器语言。
将关键部分用汇编实现。