文件名称:空间效率-vmware虚拟机中centos安装 centos安装qt的教程图解
文件大小:8.63MB
文件格式:PDF
更新时间:2024-06-29 06:30:05
程序设计实践
7.5 空间效率 存储空间过去一直是最贵重的计算资源,而且总是短缺的,想从这种没有多少油水的地方 榨出许多东西来,就会形成特别坏的程序设计。声名狼藉的“两千年问题”是经常被人提起的 典型例子。当存储器真正稀缺的时候,甚至为存储1 9所需要的那两个字节也被认为是太昂贵了。 无论缺少空间是否是其中真正的原因(实际上,这种代码也直接反映了人们在日常生活中写日期 的习惯,其中的世纪总是被省略的),这件事总是说明了一个短视的优化所具有的内在危险性。 无论如何,时代已经不同了,主存和二级存储器都已经便宜得令人感到惊异。这样,优 化空间的第一要义应该和改善速度完全一样:别为它费心。 实际中,确实还是存在某些情况,在那里空间效率是非常重要的。如果一个程序无法放 进可用的存储里,对它的各部分必须反复做页面倒换,而这又会使性能降低到令人无法容忍 的程度。我们都熟悉这种情况,新版本的软件大量地挥霍着存储器。一个可悲的现实是,软 件升级通常都伴随着存储器的大量销售。 使用尽可能小的数据类型以节约存储。提高空间效率的一个步骤是做些小修改,使现有存储 能使用得更好,例如使用能满足工作需要的最小数据类型。比如说,如果合适的话,可以用 s h o r t取代i n t,这是2 - D图形系统常用的一种技术,因为 1 6位一般足以处理屏幕坐标的可能 取值范围。或许是用 f l o a t代替d o u b l e,这带来的潜在问题是精度损失,因为 f l o a t一般 只能保持6到7位十进制数字。 对于这些修改,或者其他类似情况,程序也必须做一些改动,值得注意的是 p r i n t f和 (特别是)s c a n f语句的格式描述。 这种方法的逻辑延伸是将信息编码到字节里面,甚至到若干个二进制位里,如果可能的 话就只使用一个位。请不要使用 C或C + +的位域,它们是高度不可移植的,而且倾向于产生大 量的低效代码。你应该把所需要的操作都封装在函数里面,在这些操作中利用移位和掩码, 取出或者设置字或字的数组里的位。下面的函数能够从一个字中间取出连续一段位值: 如果这种函数太慢了,你可以用在本章前面描述的技术改进。 C++ 语言的操作符可以重载, 这样就可以把对二进制位的访问做成正规的下标形式。 不存储容易重算的东西。与代码调整类似,这方面的修改也不太重要。最重要的改进应该是 来自好的数据结构,或许还要伴随着算法的修改。这里有一个例子:许多年前一位同事来找 144计计程序设计实践 下载