您的位置:首页 > 编程语言

10、编程珠玑笔记十节省空间

2015-09-13 20:45 218 查看
10、编程珠玑笔记十节省空间
         本篇名言:“积极的人在每一次忧患中都看到一个机会,而消极的人则在每个机会都看到某种忧患。”

         欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48420257

        之前的算法都是关于加速程序的,这章中主要讲诉如何节省程序空间。

         简单性可以衍生出功能性、健壮性以及速度和空间。最早的UNIX是运行在8192个18位字的机器上开发的。他们在论文中提到:

“在系统及其软件方面,总是存在着相当严重的空间约束。如果同时对合理的效率和强大的能力提出要求,那么空间约束不仅具有经济上的意义,还会使设计更优雅一些。”

         通过使得问题简单化,可以将复杂问题简单化。同时节省大量的存储空间。

         作者举了个例子,来节省存储空间蛤蟆觉得很巧妙。

         关于这个矩阵如下图1






         可以通过200X200=40000个元素来存储。假设每个元素32位,那差不多是160KB的空间。

         通过巧妙构思,使用3个数组来实现。图2

        


第i列中的点由数组row和pointnum中位于firstincol[i]和firstincol[i+1]-1之间的元素表示。

Firstincol 只有200个元素,row数组和pointnum数组的数量一致都是总共拥有的实际数的数量。这里充分利用稀疏数据结构特点。

         此外row的数组中的元素都是小于200的,实际可以使用单字节来实现。

         最后作者给出里关于数据和程序的空间技术。

1.  关于数据空间技术

l  不存储,重新计算。 使用计算来换取空间。

l  稀疏数据结构。

l  信息压缩。通过压缩的方式对对象进行编码,以减少存储空间。

l  分配策略。有时空间的使用方式比使用量更重要。

l  垃圾回收。对废弃的存储空间进行回收再利用。

2.  关于代码空间技术

l  函数定义。通过用函数替换代码中的常见模式可以简化程序,减少空间需求。微软删除了很少使用的函数,将整个windows 系统压缩为更加紧凑的Windows CE.

l  解释程序。用解释程序来替换一长行的程序文本。

l  翻译成机器语言。这个性价比比较低,一般用于内存宝贵的系统,如DSP。

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: