如何提高delphi应用程序的启动速度?

Ola*_*laf 14 delphi performance startup delphi-2009

您如何提高Delphi应用程序的启动速度(或减少启动时间)?

除了特定于应用程序,是否有一个标准的技巧总是有效?

注意:我不是在谈论快速算法等.在速度方面,只有启动时的性能提升.

Bru*_*Gee 27

在项目选项中,不要预先自动创建所有表单.根据需要创建并释放它们.

  • +1 - 让我添加:打开任何连接,无论是数据库,互联网,COM还是其他什么,在您首先需要时. (7认同)

Mal*_*rap 19

尝试在主窗体的OnCreate事件中尽可能少地做.而是将一些初始化移动到不同的方法,并在向用户显示表单后执行此操作.应用程序忙于忙碌鼠标光标的指示器很长.

完成的实验表明,如果您使用完全相同的应用程序并只是向其添加启动通知,用户实际上会认为该应用程序启动速度更快!

除此之外,您可以执行常规操作,例如排除调试信息并在编译器中启用优化.

最重要的是,不要自动创建所有表单.根据需要动态创建它们.

  • @utku我理解你不喜欢启动画面,但是当主要版本没有立即显示时它们很有用.否则,您的用户可能不知道该应用已启动并尝试重新启动它. (3认同)

Uwe*_*abe 17

好吧,正如Argalatyr建议我将我的评论改为单独的答案:

作为"不自动创建表单"答案的扩展(这本身就非常有效)我建议延迟打开与数据库,互联网,COM服务器和任何外围设备的连接,直到您首先需要它为止.


gab*_*abr 13

在您的表单显示之前会发生三件事:

  1. 所有单元中的所有"初始化"块都以"第一次看到"的顺序执行.
  2. 创建所有自动创建的表单(从DFM文件加载并调用其OnCreate处理程序)
  3. 显示主窗体(调用OnShow和OnActivate).

正如其他人所指出的,你应该只自动创建少量的表单(特别是如果它们是具有大量组件的复杂表单),并且不应该在这些表单的OnCreate事件中进行冗长的处理.如果您的主要形式非常复杂,您应该重新设计它.一种可能性是将主表单拆分为多个按需加载的帧.

其中一个初始化块也可能需要一些时间来执行.要验证,请在程序的第一行放置断点(.dpr文件中的主"begin..end"块)并启动程序.将执行所有初始化块,然后断点将停止执行.

以类似的方式,您可以在主程序上执行步骤(F8) - 您将看到创建每个自动创建的表单需要多长时间.