28

我有一些大型(约 60 万行代码)Delphi 项目。它们包括我们团队开发的一些自定义组件。

通常,当我使用 ctrl+space 或仅按“.”调用代码完成时,IDE 会锁定并且很难思考很长时间。有时延迟可能是一分钟或更长时间。其他时候,它会立即弹出建议。

哪些因素会影响 Delphi 中智能感知的性能?有什么办法可以提高这种性能吗?

到目前为止,我最好的解决方案是关闭自动完成,当我需要安静地冥想一分钟左右时使用 ctrl+space。

我不得不提到 VS2005、VS2008 和 XCode 似乎都可以提供几乎即时的智能反馈(尽管我从未在这么大的项目上尝试过)。

作为替代方案,我提出了这个建议

4

6 回答 6

14

当用户请求 Code Insight(Ctrl+Space、'.' 等)时,Delphi Code Insight 调用编译器 dll 进行自定义编译。此自定义编译在单元中进行构建并跳过代码生成、链接等,直到它到达文件缓冲区中的当前偏移量。考虑到这一点,编译器在到达您当前位置之前看到的单元列表将在确定 Code Insight 操作的速度方面发挥重要作用。可能有一个单元(或多个单元)导致严重的文件系统依赖性等。很可能重新排序使用子句,将使用子句重构为多个文件,或删除使用子句中的单元编译当前单元所必需的可能会提高性能。此外,

于 2009-05-22T15:12:43.813 回答
7

请务必在 dpr 中明确包含项目使用的所有单位 (*)。
不要依赖搜索路径来查找从另一个单元调用的单元,将其添加到 dpr。dpr 会更长,但所有与编译相关的东西都会更快,包括代码洞察力。

(*) 不是已安装组件的单位。

于 2009-05-22T20:00:36.190 回答
4

我不知道您使用的是哪个版本,但代码完成速度更快是我最喜欢 Delphi 2009 的原因之一。

于 2009-05-22T20:15:59.997 回答
3

这是 Delphi 长期存在的问题,我不得不求助于关闭自动完成。以这种方式工作了一段时间后,我对此感到非常满意。即使只需要几分之一秒,让 IDE 滞后我的打字也令人不安并打断了我的流程。关闭自动装置会更好,IMO。

于 2009-05-22T15:08:09.330 回答
2

I just came across this problem myself, I fixed it by removing a dead network link from my environment library path. Solved my issue 100%.

于 2009-06-05T16:29:33.153 回答
0

您是否将团队自定义组件的源目录包含在库路径中?如果只有组件 DCU 文件在库路径中,而不是在其中也有源文件,那么看看速度差异会很有趣。

于 2009-05-24T11:27:13.243 回答