我有一些大的(~600k代码行)Delphi项目。它们包括我们团队开发的一些自定义组件。
通常,当我使用ctrl + space调用代码完成或只是按“。”时,IDE会锁定并且很长时间都认为很难。有时延迟可能是一分钟或更长时间。其他时候,会立即弹出建议。
哪些因素会影响Delphi中智能感知的表现?有什么方法可以改善这种表现吗?
到目前为止,我最好的解决方案是关闭自动完成功能,并在需要静静冥想一分钟左右时使用ctrl + space。
我不禁要提到VS2005,VS2008和XCode似乎都提供了几乎即时的智能感知反馈(虽然我从未尝试过这么大的项目)。
作为替代方案,I've offered this suggestion。
答案 0 :(得分:14)
当用户请求Code Insight(Ctrl + Space,'。'等)时,Delphi Code Insight调用编译器dll进行自定义编译。这个自定义编译在单元中进行构建,并跳过codegen,链接等,直到它达到文件缓冲区中的当前偏移量。考虑到这一点,编译器在到达当前位置之前看到的单元列表将在确定Code Insight操作的速度时起到很大的作用。可能有一个单元(或多个单元)导致严重的文件系统依赖等。很可能重新排序uses子句,将uses子句重构为多个文件,或者删除uses子句中的单元'您当前单元编译所需的可能会提高性能。此外,使用包或缩短单位搜索路径可能会缩短CI响应时间。
答案 1 :(得分:7)
请务必在dpr中明确包含项目使用的所有单位(*) 不要依赖搜索路径来查找从另一个单元调用的单元,将其添加到dpr。 dpr会更长,但所有与编译相关的东西都会更快,包括代码洞察力。
(*)不是已安装组件的单位。
答案 2 :(得分:4)
我不知道您使用的是哪个版本,但更快的代码完成是我最喜欢的Delphi 2009之一。
答案 3 :(得分:3)
这是Delphi长期存在的问题,我不得不求助于自动完成。经过一段时间的工作后,我对它非常满意。即使它只需要几分之一秒,让IDE延迟我的输入是令人不安的并且打断了我的流量。关闭自动驾驶仪更好,IMO。
答案 4 :(得分:1)
我自己刚遇到这个问题,我通过从环境库路径中删除死网络链接来修复它。 100%解决了我的问题。
答案 5 :(得分:0)
您是否将团队自定义组件的sources目录包含在库路径中?如果只有组件DCU文件在库路径中,那么看到速度差异会很有趣,而不是在那里有源文件。