编程珠玑--节省空间
2012-08-28 11:43
274 查看
一,概述
1)节省空间带来的好处
程序变小使得加载更快;更容易读入高速缓存;需要操作的数据减少从而减少操作时间。
2)节省空间的方法
数学函数式替代要存储的数据。简单例子为:a[i]=i 。如果你要读取数组第i个元素只需要通过函数f(i) = i得到元素值,而不需要将所有数据存储在数组中。
改变数据结构。如果一个数字范围为0-200,则完全没有必要采用32位的int型存储,只需要采用8位的无符号char型存储即可。
链表替代稀疏二维数组。虽然指针也需要空间存储,如果二维数组存储很少的数据,则可以考虑权衡一下是否要用链表代替稀疏二维数组。(数组表示列,链表表示行的方式。而不是单链表)
3)减少程序所需数据的存储空间的技术
1> 不存储,重新计算。
典型的时间换空间策略,假如判断质数:用函数判断是否为质数相对于查询质数表就是时间换空间的例子。
在网络传输时候,往往时间显得很重要。采用本地缓存的方式减少需要传输的数据量。
2> 稀疏数据结构。
使用指针共享大型对象,消除存储同一对象的众多副本的开销
其他方法,你懂得……嘿嘿
3> 数据压缩。
用8位的char替代 32位的int 。
利用函数将两个十进制数,放到一个字节里。加密:c= 10 * a + b; 解密:a= c / 10 ; b= c % 10;
注意 / 和 %运算符开销较大,即运行时占用内存较多。如果采用这种方法,相当于用较小的内存来换取存储字节的磁盘存储空间。
4> 分配策略。
动态分配替代静态分配。即只有在需要的时候才分配空间。
5> 垃圾回收。
4)代码空间技术
二,习题
6)加密:c= 10 * a + b; 解密:a= c / 10 ; b= c % 10;
更优化策略:
加密:c= a<<4 | b; 解密:a= c >> 4 ; b= c & 0xF;
解释下把:c为8个字节,一般只使用低位的四位。加密时将a提高到高四位。再与b异或,则b放到字节底四位。解密时,将底四位的b移走得到a 。将c跟低四位为1111的数相与得到b
10)原始声音文件(wav)采样率高占用存储空间大。在保证人耳听不出失真情况下,降低采样率,形成压缩MP3的声音格式文件。
原始图片文件(raw,bmp),无损压缩成gif格式。有损压缩成jpeg
原始视频文件(avi:音频视频交错(Audio Video Interleaved))。压缩成(3GP,mpg)
1)节省空间带来的好处
程序变小使得加载更快;更容易读入高速缓存;需要操作的数据减少从而减少操作时间。
2)节省空间的方法
数学函数式替代要存储的数据。简单例子为:a[i]=i 。如果你要读取数组第i个元素只需要通过函数f(i) = i得到元素值,而不需要将所有数据存储在数组中。
改变数据结构。如果一个数字范围为0-200,则完全没有必要采用32位的int型存储,只需要采用8位的无符号char型存储即可。
链表替代稀疏二维数组。虽然指针也需要空间存储,如果二维数组存储很少的数据,则可以考虑权衡一下是否要用链表代替稀疏二维数组。(数组表示列,链表表示行的方式。而不是单链表)
3)减少程序所需数据的存储空间的技术
1> 不存储,重新计算。
典型的时间换空间策略,假如判断质数:用函数判断是否为质数相对于查询质数表就是时间换空间的例子。
在网络传输时候,往往时间显得很重要。采用本地缓存的方式减少需要传输的数据量。
2> 稀疏数据结构。
使用指针共享大型对象,消除存储同一对象的众多副本的开销
其他方法,你懂得……嘿嘿
3> 数据压缩。
用8位的char替代 32位的int 。
利用函数将两个十进制数,放到一个字节里。加密:c= 10 * a + b; 解密:a= c / 10 ; b= c % 10;
注意 / 和 %运算符开销较大,即运行时占用内存较多。如果采用这种方法,相当于用较小的内存来换取存储字节的磁盘存储空间。
4> 分配策略。
动态分配替代静态分配。即只有在需要的时候才分配空间。
5> 垃圾回收。
4)代码空间技术
二,习题
6)加密:c= 10 * a + b; 解密:a= c / 10 ; b= c % 10;
更优化策略:
加密:c= a<<4 | b; 解密:a= c >> 4 ; b= c & 0xF;
解释下把:c为8个字节,一般只使用低位的四位。加密时将a提高到高四位。再与b异或,则b放到字节底四位。解密时,将底四位的b移走得到a 。将c跟低四位为1111的数相与得到b
10)原始声音文件(wav)采样率高占用存储空间大。在保证人耳听不出失真情况下,降低采样率,形成压缩MP3的声音格式文件。
原始图片文件(raw,bmp),无损压缩成gif格式。有损压缩成jpeg
原始视频文件(avi:音频视频交错(Audio Video Interleaved))。压缩成(3GP,mpg)
相关文章推荐
- 《编程珠玑》阅读小记(7) — 代码调优与节省空间
- 《编程珠玑》阅读小记(7) — 代码调优与节省空间
- 《编程珠玑》笔记10 节省空间
- 编程珠玑:第10章 节省空间 10.1 稀疏矩阵表示 ---- 解题总结
- iOS 9的App Thinning方案如何节省存储空间
- 使用下拉列表框,节省空间
- 利用phar扩展来节省空间
- 彻底删除GIT中的文件,节省空间
- 节省Windows 7系统硬盘空间的具体方法
- union用来节省空间,有些数据项不会同时出现
- win8 c盘越来越小如何节省空间 修改win8应用安装路径
- 节省磁盘空间 清除Thumbs.db文件
- 优化 Ext4 分区格式化后占用空间(通过降低inode数来节省磁盘空间)
- GNU C中的零长度/变长数组 、内存空间节省
- 从git中永久删除文件以节省空间
- 一种节省空间的交换变量的基本算法
- 优惠券设计(节省表空间)
- 使用下拉列表框,节省空间
- 从git中永久删除文件以节省空间