已经delphi win32 exe的大小是~850 kb,他们是否有任何使exe大小更小的路线图,(我知道大小是因为vcl unicode RTTI等等),delphi编译整个单元甚至只有一个需要在单元中的小功能。所以有任何设施,或第三方产品,(我知道kol和mck做同样的事)
答案 0 :(得分:11)
我怀疑exe大小对Delphi团队来说是一个问题,甚至对大多数用户来说也是如此。正如您所注意到的,unicode和新的RTTI增加了大小,虽然您可以转换新的RTTI,但实际上您无能为力。
一般来说,每个新的Delphi版本都会产生更大的exes,我不认为这种趋势会发生变化。
至于编译不正确的整个单元,除非编译包,否则编译器不会包含未使用的方法和声明。
如果exe大小很重要,那么你没有太多选择。如果您不需要unicode和其他新功能,那么使用D2007或D7甚至D2是一种选择。
您可以使用exe包装工,例如UPX。
如果构建一组应用程序,则可以使用共享包来减小总大小。
另请查看以下内容:
答案 1 :(得分:2)
我不确定kol and mck与您关于.EXE大小的问题有什么关系。
您的问题中假设一个单元总是完全包含在您的.EXE中,即使实际上只使用了该单元的一小部分,这是完全错误的。
Delphi有代码优化器和链接器优化器
如果该代码实际上并未以某种方式使用,后者将不包含.EXE中单元的代码。
您更常见的问题是“他们是否有任何使exe尺寸变小的路线图”可以通过简单的“否”来回答。
current roadmap不包含该内容。
- 的Jeroen
答案 2 :(得分:0)
你当然不应该期望未来的64位Delphi版本的exe大小比当前的32位Delphi exe文件要小。
相反:指针和指针大小的类型的大小将加倍,而其他数据结构的大小可能会因填充而增大(以满足对齐要求)。所有这些都被编译成可执行文件,因此其大小将会增长。
答案 3 :(得分:0)
未来的道路看起来将变得更大。应用程序的大小变得不那么重要,因为磁盘大小,带宽和内存占用很少是Windows世界的问题。在exe大小和exe优化之间总是存在权衡(一些优化技术可以使exe更大),而64位可执行文件可能会稍大一些。此外,对语言的改进可能需要存储关于代码本身的更多数据(即,RTTI信息)。有一些技术可以保持exe大小,但它们通常需要绕过大多数Delphi OOP和RAD功能和库。除非你有非常特殊的需求,否则很少有exe大小是一个问题(虽然我知道世界上某些部分带宽仍然很重要,也可能是磁盘空间)。
无论如何AFAIK不是真的Delphi链接器将导入整个单元。未使用的呼叫将被删除,但不是您想要的所有内容。 dcu将作为一个整体进行编译,但只需将代码移动到已编译的可执行文件中。某些东西可能取决于您的编译选项。您是否激活了优化选项?
答案 4 :(得分:0)
我认为Free Pascal常见问题也适用于Delphi: