gpt4 book ai didi

Delphi:如何组织源代码以提高编译器性能?

转载 作者:行者123 更新时间:2023-12-03 14:33:02 25 4
gpt4 key购买 nike

我正在开发一个大型 delphi 6 项目,有很多依赖项。编译整个项目需要几分钟的时间。进行一些更改后的重新编译有时会更长,因此可以更快地终止 Delphi、删除所有 dcu 文件并重新编译所有内容。

有谁知道一种方法来识别是什么让编译器变得越来越慢?关于如何组织代码以提高编译器性能有什么建议吗?

我已经尝试过以下操作:

  • 在 dpr 中显式包含大部分单元,而不是依赖搜索路径:它没有任何改进。
  • 使用命令行编译器 dcc32:它并不快。
  • 尝试看看编译器做了什么(使用 SysInternals 的 ProcessExplorer):显然它大部分时间都运行一个名为“KibitzGetOverloads”的函数。但我无法利用这些信息做任何事情...

编辑,到目前为止的答案摘要:

对我来说最有效的答案:

  • 来自 cnpack 的“清理未使用的单元引用”功能。它几乎自动清理了 1000 多个引用,使“冷”编译速度提高了两倍。 (“冷”编译=编译前删除所有 dcu 文件)。 它从编译器获取引用列表。因此,如果您有一些 {$IFDEF },请检查您的所有配置是否仍然可以编译。

我想尝试的下一件事:

  • 手动重构单元引用(最终使用抽象类)但这是更多的工作,因为我首先需要确定问题出在哪里。一些可能有帮助的工具:
    • GExperts在delphi IDE中添加项目依赖项浏览器(但遗憾的是它无法显示每个分支的大小)
    • Delphi Unit Dependency Viewer V1.0做同样的事情,但没有德尔福。它可以计算一些简单的统计数据(哪些单位被引用最多,...)
    • Icarus a link 上引用了该内容在其中一个答案中。

对我的情况没有任何改变的事情:

  • 将程序中的每个文件和所有组件放在一个文件夹中,不包含子文件夹。
  • 对磁盘进行碎片整理(我尝试使用 ramdisk)
  • 使用 ramdisk 作为代码源和输出文件夹。
  • 关闭实时扫描防病毒
  • 列出 dpr 文件中的所有单位,而不是依赖搜索路径。
  • 使用命令行编译器 dcc32 或 ecc32。

不适用于我的情况:

  • 避免依赖网络共享。
  • 使用 DelphiSpeedUp ,因为我已经拥有了。
  • 对所有 dcu 使用单个文件夹(我总是这样做)

我没有尝试过的事情:

  • 升级到另一个 Delphi 版本。
  • 使用 dcc32speed.exe
  • 使用固态驱动器(我没有尝试过,但我尝试使用 ramdisk 来放置所有源代码。但也许我也应该在 ramdisk 上安装 delphi)

最佳答案

一些可能会减慢编译器速度的事情

  • uses 子句中的
  • 冗余单元。请参阅this question获取 CnPack 的链接。
  • 没有明确地将单元添加到您的项目文件中。您似乎已经涵盖了这一点。
  • 更改了编译器设置,尤其是包含 TDD32 信息

尝试删除 use 子句中未使用的单位,看看是否会产生影响。

关于Delphi:如何组织源代码以提高编译器性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/920560/

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