包含许多单元的Delphi项目需要大量运行

LaB*_*cca 6 delphi performance

我有一个拥有290多个单位的dpr.

编译的exe是50MB.

dpr代码现在是这样的:

begin
  ShowMessage('Before Initialize');
  Application.Initialize;
Run Code Online (Sandbox Code Playgroud)

当我双击构建的exe时,我注意到8秒后才看到"Before Initialize"之前.这是因为大的exe大小?或者有没有办法减少这个时间?

Mik*_*son 17

在Application.Initialize之前执行每个单元的每个初始化部分.你可能有一些需要时间的代码.

单位数量不是问题.我有一个1100多个单元的项目,exe是35 MB,它立即开始.

如果您从网络驱动器或非常慢的磁盘启动,您可能会遇到速度减慢.

  • 快速提示:如上所述,执行应用程序中的初始化部分,但也会执行组件的初始化部分.我在启动时发现的一个大缓慢(最多60秒延迟)是由于打印机属性对话框组件试图查询我在控制面板中安装的网络打印机的属性,但没有响应.映射的网络驱动器和其他未响应的网络资源,以及组件初始化可能是一个问题区域.使用RAD Studio XE附带的AQTime来分析您的应用. (5认同)
  • 您可以通过在启动期间在其上粘贴探查器(例如http://delphitools.info/samplingprofiler/)来诊断程序花费时间的位置. (4认同)
  • 也可能是由防病毒程序引起的. (4认同)

Jer*_*ers 4

根据你的问题,它可以是任何东西。

我能给你的唯一建议是测量:
在所有单元初始化部分记录每个进入/退出的时间戳。

根据您的评论之一(您应该将其添加到您的问题中,因为它描述了更多细节):

WindowsCodecs.dll由您的一个单元初始化,可能将一个或多个图像从一种格式转换为另一种格式。
您应该延迟转换,直到需要转换结果为止。

——杰罗恩

  • 最后我下载了 AQTime Profiler 试用版,发现问题出在第 3 方库初始化代码中。 (5认同)