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

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。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值