Delphi 2010中的代码自动完成速度有所提高吗?

6
我正在使用Delphi 2009 Pro,并尝试找出为什么我的代码自动完成速度如此缓慢。每当调用代码自动完成时,IDE会锁定长达30秒,这真的会打断任何工作流程。
与BDS 2006一起工作时,与Delphi 2009相比,代码自动完成速度非常快。
阅读此帖子后,似乎对于Delphi 2009来说这是正常现象,但我不想关闭自动代码完成功能。
我的问题是:
如果我切换到Delphi 2010,我的代码自动完成速度会变得如此缓慢吗?还是已经改进到可以使用的程度了?
编辑:
我发现了导致我的IDE反应迟钝的主要问题。我使用了一个文件MSHTML_TLB.pas,通过“导入类型库”函数创建,它有16MB的代码。扫描这个文件以进行代码自动完成会使IDE冻结长达30秒。如果项目中没有该文件,则我认为代码自动完成的速度与以前的版本一样快。

1
30秒?这正常吗?在我的电脑上,即使是非常大和复杂的项目,我从未观察到任何延迟。 - Andreas Rejbrand
我用BDS2006很顺利,而且我总是听说这是一个非常慢的IDE。Delphi 2009更快,当然,只是在代码完成方面不太快。 - Holgerwa
D2010对我来说更快。然而,我主要使用C++ - 我不确定在Delphi方面它是否更快。 - David
1
无论是在D2007还是升级到D2010后,我在大型项目上都会遇到同样的问题。足够大的项目将导致代码补全在30-40秒内杀死编辑器 - 足够分散你的注意力并妨碍工作。我很想看到修复此问题的方法,或者至少有一个可用的解决方案。通常我最终选择关闭它,这非常遗憾,因为它真正有用。 - robsoft
你的前五个最大的.pas文件有多少千行? - Warren P
Warren: 最大的一个有9000行,其余的大约有5000行。 - Holgerwa
4个回答

6

尝试使用CnWizards http://www.cnpack.org/showlist.php?id=39&lang=en

CnWizards是一个免费的Delphi IDE开源插件,它为IDE增加了许多改进功能,如消息框向导、代码统计、代码结构高亮、改进的代码自动完成等等...


-1 表示一个无用的链接,指向一些没有描述性的下载链接页面。这可能是任何东西。可能有用,可能不安全,也可能是恶意软件,无从得知。 - Chris Thornton
1
我知道cnWizards不是恶意软件。它是Delphi的一个有用的插件。 - Roland Bengtsson
我给了这个-1,因为我通常不喜欢第三方解决方案,尤其是如果答案根本没有回答所提出的问题:D2010是否比D2009更快? - Andreas Rejbrand
3
尽管答案与问题“Delphi 2010的代码自动完成速度是否有所提高?”不直接相关,但很明显用户正在寻找更快的代码自动完成解决方案,而CnWizards提供了这种功能。CnWizard提供的代码自动完成比Delphi默认实现要快得多,其自动调用功能也更加出色。此外,它适用于更广泛的标识符,并且即使输入的单词位于标识符名称中间,而不仅仅是开头,它也可以搜索该单词。相比之下,Delphi自己的代码自动完成就像一堆垃圾。 - vcldeveloper
1
我尝试了几天的cnWizard,它比Delphi的代码完成功能好得多。非常感谢提供链接。当然,如果内置功能得到改进,那将会更好,因为我们(程序员)每分钟都要使用它。 - Holgerwa

5

很遗憾,没有。在Delphi 2010中它并没有变得更快。


很遗憾,我使用的是D2007,经常会出现长达30秒的代码完成冻结。而且,当我输入方法名并键入“(”时,也可能会冻结很长时间。该项目大约有150万行源代码和数百个源文件。我使用D2007,有时想创建一个新项目,并逐个添加源文件以清理它并使其更快。但由于时间不足,甚至可能无法提高性能... - Roland Bengtsson
2
是的,那个开括号的提示特别烦人。你可以在“工具”->“选项”->“编辑器选项”->“代码洞察”下禁用它。然后只有在你使用CTRL-SHIFT-SPACE调用时才会给你参数帮助。 - Mason Wheeler

2
我不确定在D2010中是否比D2006慢。您尝试过以下操作吗?
  • 清理uses子句,
  • 确保路径(lib、search)短且没有过时的目录/网络链接,
  • 明确地包含dpr中使用的所有单元,
  • 重新排列uses子句?
这样做的想法是让“即时”编译器尽快到达您在代码中的位置。

这是Delphi与Delphi的比较,因此已经与D2006和D2009/D2010使用相同的设置进行了比较。我和OP一样在我的D2009中遇到了问题。它有时会锁定,而D2006则没有或不会那么长时间。 - Marco van de Voort
你能保证你的项目使用相同的路径和功能吗?根据我的经验,升级到新版本的Delphi通常会带来其他修改,这些修改很少没有副作用。 - Francesca

2

我曾经在我的笔记本电脑上以及使用网络驱动器时遇到过此问题——第一次触发代码完成时会卡顿长达30秒。

为了解决这个问题,我把我正在工作的文件移动到了本地快速驱动器上,这个问题几乎就消失了——我仍然会卡顿,但只有1或2秒,而不是30秒!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接