【问题标题】:Is Code Completion speed improved in Delphi 2010?Delphi 2010 中的代码完成速度是否有所提高?
【发布时间】:2010-05-23 15:48:56
【问题描述】:

我正在使用 Delphi 2009 Pro,只是试图找出我的设置中代码完成速度如此缓慢的原因。每当调用代码完成时,IDE 都会锁定长达 30 秒,这确实会中断任何工作流。
使用 BDS 2006 时,与 Delphi 2009 相比,代码完成速度非常快。
看了this post之后觉得Delphi 2009好像很正常,但是只是关掉代码自动补全不是我想做的。

我的问题是:
如果我切换到 Delphi 2010,我的代码完成速度是否会一样慢,或者它是否已改进到可以使用的程度?

编辑:
我发现了我的 IDE 反应迟钝的主要问题。我使用了一个文件 MSHTML_TLB.pas,它是通过“导入类型库”功能创建的,它是 16MB 的代码。正在扫描此文件以进行代码完成会冻结 IDE 长达 30 秒。如果项目中没有该文件,我会说代码完成与以前的版本一样快。

【问题讨论】:

  • 30 秒?这正常吗?在我的电脑上,我从来没有观察到任何延迟,即使是在非常大和复杂的项目中。
  • 使用 BDS2006 对我来说工作得很好,我总是读到这是一个非常慢的 IDE。 Delphi 2009 确实更快,只是在代码完成方面没有。
  • D2010 对我来说更快。但是,我主要使用 C++ - 我不确定它在 Delphi 方面是否更快。
  • 我在大型项目上也有同样的问题,无论项目是在D2007还是迁移到D2010。一个足够大的项目将导致代码完成以杀死编辑器长达 30-40 秒 - 足以分散您的注意力并妨碍您。我喜欢看到修复,或者至少是一个可用的解决方法。通常我最终会关闭它,这是一个巨大的耻辱,因为它真的很有用。
  • 前五个最大的 .pas 文件有多少万行?

标签: delphi delphi-2009 delphi-2010


【解决方案1】:

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

CnWizzards 是 Delphi IDE 的一个免费开源插件,它为 IDE 添加了多项改进,例如消息框向导、代码统计、代码结构突出显示、改进的代码完成强>,还有更多...

【讨论】:

  • -1 用于指向非描述性下载链接页面的无用链接。可以是任何东西。可能有用,可能是 NSFW,也可能是恶意软件,不知道。
  • 我知道 cnWizards 不是恶意软件。它是 Delphi 的一个有用的插件。
  • 我给这个 -1 是因为我通常不喜欢第 3 方解决方案,尤其是如果答案无法回答给定的问题:D2010 是否比 D2009 快?
  • +1 虽然答案与这个问题没有直接关系:“Delphi 2010 中的代码完成速度提高了吗?”,很明显用户正在寻找更快的代码完成解决方案,而 CnWizards提供这个。 CnWizard 提供的 Code Completion 比 Delphi 的默认实现要快得多,而且它的自动调用功能效果更好。它还适用于更广泛的标识符,并且可以搜索输入的单词,即使它位于标识符名称的中间,而不仅仅是开头。与 CnWizard 相比,Delphi 自己的代码完成是一团糟。
  • 我试用了 cnWizard 几天,它比 Delphi 的 Code Completion 好得多。非常感谢您的链接。当然,如果能改进内置功能会更好,因为我们(程序员)生活中的每一分钟都必须处理它。
【解决方案2】:

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

【讨论】:

  • 很遗憾,我使用的是 D2007,并且我经常在 30 秒左右长时间冻结以完成代码。还有像写方法名和类型'('它可能会冻结很长时间。该项目有大约150万个源代码行和数百个源文件。我使用D2007,有时我会考虑创建一个新项目并一个一个地添加源文件,也许可以清理它并使其更快。但由于时间不足,它可能永远不会发生,甚至可能不会提高性能......
  • 是的,开括号的东西特别烦人。您可以在 Tools->Options->Editor Options->Code Insight 下禁用它。然后,如果您使用 CTRL-SHIFT-SPACE 调用它,它只会为您提供参数帮助。
【解决方案3】:

我不确定它在 D2010 中实际上是否比在 D2006 中慢。

你试过了吗

  • 清理你的uses子句,
  • 确保您的路径(lib、搜索)短且没有过时的目录/网络链接,
  • 在 dpr 中明确包含所有使用的单位
  • 重新排列您的使用条款?

这个想法是让“即时”编译器尽快到达您在代码中的位置。

【讨论】:

  • 这是 delphi 与 delphi 的比较,所以这已经与 D2006 和 d2009/d2010 的相同设置进行了比较。我与我的 d2009 分享了 OP 的问题。它有时会在 d2006 没有锁定的地方锁定,或者锁定的时间不长。
  • 你保证你有相同的项目,相同的用途和相同的路径?根据我的经验,切换到较新版本的 Delphi 经常伴随着其他几乎没有副作用的修改。
【解决方案4】:

我曾经在我的笔记本电脑和使用网络驱动器时都遇到过这个问题 - 在第一次触发代码完成时,我会挂起长达 30 秒。

为了解决这个问题,我将正在处理的文件移动到本地快速驱动器,问题几乎消失了 - 我仍然挂断,但只有一两秒而不是 30 秒!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多