刚才和hurd讨论D的文件尺寸问题,自己尝试时发现了一点线索。
我试了一下,用-g生成的dwt程序大约3m,用-O -release(没有inline)生成的程序大约2m。
然后把它分分别反汇编了一下,release版代码段占用约40%,数据段占用约60%。(-g版是3:7)
由于代码段没什么规律性,所以大多数压缩程序对代码段的压缩比都不明显(从各压缩结果的大小比较接近代码段大小,就可以看出来)
所以关键的部分就在于数据段了。
我生成的dwt程序数据段,体积比较大的主要是以下部分:
dwt中import的swt的properties文件 (文本内容,比较容易被压缩)
程序中使用的各种常量,主要是字符串常量 (当然大部分也是文本内容)
dll和api函数名 (还是文本内容)
各种类结构的定义 (很有规律,甚至包含大量0值字节仅用于占位,所以也很较容易被压缩)
最后还有一部份就是段的定义大小与实际使用大小间的剩余空间,都是以0填充的,也可以轻易压缩掉。
所以D程序可以很容易的压缩到接近代码段,甚至略小于代码段的体积。
可是为什么目标文件结构比较接近的C++比D要小呢?
我觉得主要是因为D
的
设计使得类更容易被继承,tango和dwt中被嵌套了四五层对上的类很常见,在C++中这种的情况却还多,这使得目标代码要存放更多的类的结构信息。
从phobo生成的目标文件通常小于tango的目标文件,就可以说明这一点。
目标大小对程序运行有没有影响?
我觉得影响不太,实际上对大小过分的优化可能会影响程序的性能,比如在类操作时还原类的结构信息,这无形上增加了cpu的开销。当然也可以在程序执行前一次性还原类的结构信息,不过这就和压缩工具就没有什么本质区别了。
最后程序可以压缩到多大?
如果没有import一些压缩过的、或者不容易被压缩的文件的话,就像上面所说的,应该可以被压缩到接近代码段的大小。
分享到:
相关推荐
机器语言 D.高级语言 9.主要决定微机性能的是( )。 A.CPU B.耗电量 C.质量 D.价格 10.微型计算机中运算器的主要功能是进行( )。 A.算术运算 B.逻辑运算 C.初等函数运算 D.算术运算和逻辑运算 11.MIPS常用来描述...
能够将高级语言源程序加工为目标程序的系统软件是_____(4分) (A) 解释程序(B) 汇编程序(C) 编译程序(D) 编辑程序标准答案是:C 11. 在Windows 中,可以设置、控制计算机硬件配置和修改显示属性的应用程序是_____(4 ...
该项目的目标是为D语言创建一个现代的,易于使用的,可扩展的3D游戏引擎。 Dagon基于OpenGL 4.0核心配置文件。 它适用于32位和64位Windows和Linux。 它不支持macOS,因为Apple不再支持OpenGL。 Dagon仍在开发中,...
A:字节 B:位 C:字 D:KB 答案: B 8、能够将高级语言源程序加工为目标程序得系统软件就是____。 A:解释程序 B:汇编程序 C:编译程序 D:编辑程序 答案: C 9、计算机得硬件系统由五大部分组成,下列各项中不属于这五...
A:字节 B:位 C:字 D:KB 答案: B 8、能够将高级语言源程序加工为目标程序的系统软件是____。 A:解释程序 B:汇编程序 C:编译程序 D:编辑程序 答案: C 9、计算机的硬件系统由五大部分组成,下列各项中不属于...
(A)源操作数和目标操作数 (B)数字和文字 (C)ASCII码和汉字代码 (D)操作码和操作数 14、下面关于显示器的四条叙述中,有错误的一条是______。 (A)显示器的分辨率与微处理器的型号有关 (B)显示器的分辨率为1024×768...
A:字节 B:位 C:字 D: KB 答案:B 8、 能够将高级语言源程序加工为目标程序的系统软件是—。 A:解释程序 B:汇编程序 复习题一计算机应用基础1全文共7页,当前为第2页。复习题一计算机应用基础1全文共7页,当前...
ASM:汇编语言源文件,Pro/E装配文件 ASP:动态网页文件;ProComm Plus安装与连接脚本文件;Astound介绍文件 AST:Astound多媒体文件;ClarisWorks“助手”文件 Axx:ARJ压缩文件的分包序号文件,用于将一个大...
用GHOST快速恢复系统时,如果有多个目标硬盘和目标分区,可以随意选择B. 正确 15. 如果没有正确安装设备驱动程序,电脑有些硬件可能无法正常使用B. 正确 16. MODEM是上网必须的网络设备B. 正确 17. 计算机申请了...
用C++语言编制的源程序要变为目标程序必须要经过( d )。 (a) 解释 (b) 汇编 (c) 编辑 (d) 编译 3.C++程序基本单位是( c )。 (a) 数据 (b) 字符 (c) 函数 (d) 语句 4. C++程序中的语句必须以( b )结束。 ...
13、(选做)题目:微型学生养成系统(每个学生都可以选,以完成程度、个性化设计为主要考核目标) 在这个课程设计中,你需要设计并实现如下场景:在那山的那边,湖的那边,有一所学校,学校里有一幢宿舍楼,宿舍楼有...
会到keil c51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑, 容易理解。在开发大型软件时更能体现高级语言的优势。 Keil C51 可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人 员可用IDE...
* 当前系统/WinPE使用Ghost32/Ghost64/Ghostexp或DOS下使用Ghost把相应的gho文件恢复/提取至目标分区,目标分区可以为逻辑分区或非活动主分区,用本工具的“自动修复/手动修复”功能修复相应分区的Win系统即可。...