gpt4 book ai didi

delphi - Delphi 应用程序什么时候对于单个 EXE 来说太大?

转载 作者:行者123 更新时间:2023-12-03 14:39:24 28 4
gpt4 key购买 nike

如果我将整个 Delphi 应用程序编译为单个 exe,该文件将增长到 5MB、10MB,甚至更多。什么时候太大了?这有什么问题呢?这是一个商业应用程序,目前在 Delphi XE 上。

我知道使用运行时包构建的选项。这听起来是个好主意,但我看到这里的评论指出存在一些问题和缺点。

最佳答案

Delphi 应用程序永远不会太大
然而,exe 越大,重新分发该文件就越困难。
此外,如果可执行文件位于网络磁盘上,启动时间可能会受到影响。

许多因素导致 exe 增长:

  • 启用调试信息(或多或少会使 exe 大小增加一倍)。
    enter image description here
    禁止在最终的 exe 中包含调试信息(参见上面的屏幕截图)。
  • 包含位图(在imagelist或类似组件中)也会大大增加exe的大小。
  • 包含资源(使用自定义 *.res)文件会增加大小。

我建议不要将资源放入单独的 dll 中。
这将使您的应用程序变得复杂,同时不会减少加载时间和分发问题。
必须关闭生产代码中的调试信息。
如果您有 Delphi-2010 或更新版本,您可以选择包含 png 格式的图像。
这将比老式位图占用更少的空间。

只要您的应用程序小于 30 MB,我就不会太担心文件大小。

去除 RTTI 信息
David 建议剥离 RTTI 信息(这将禁用实时绑定(bind)和其他一些高级内容),请参阅:Reduce exe file
据 David 称,它可以节省大约 30% 的 exe 大小。

Exe-size 只会增加加载时间
更重要的是应用程序分配作为存储的数据量。
您在此处使用(或浪费)的空间量对应用程序性能的影响远大于原始 exe 大小的影响。
Strategy or tools to find "non-leak" memory usage problems in Delphi?

更好的优化方法是确保不泄漏资源
How to activate ReportMemoryLeaksOnShutdown only in debug mode?
Windows API calls memory leak detection

使用智能数据结构和算法
它太笼统了,无法真正缩小范围,但请使用 O(缓慢增加)而不是 O(浪费性增加)的算法。
Big-O for Eight Year Olds?
并尝试通过仅获取您需要的数据而不是您可能需要但可能永远不会的所有数据来限制内存使用。
Delphi data structures
等等等等

关于delphi - Delphi 应用程序什么时候对于单个 EXE 来说太大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8183942/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com