Delphi:在CreateForm中,如何判断哪个组件创建速度慢

时间:2016-08-11 14:13:04

标签: delphi

在我的程序中,主窗体的创建很慢:我已经确定它在调用窗体的OnCreate事件之前会挂起大约两秒钟。所以我怀疑在创建组件时会发生这种情况。

由于这个表单有几个框架,我想知道是否有一种方法来“分析”组件创建,以便了解我可以改进的地方。我怀疑延迟来自于打开一个当时不应该打开的数据库表(相反,稍后,在进行了一些过滤之后)。

如果有一种方法可以在每个组件创建之前/之后触发事件,我可以自己进行性能分析(例如使用codesite)。

或者也许可以手动创建组件?

1 个答案:

答案 0 :(得分:3)

这是一种快速而肮脏的方法来确定延迟的位置:

  • 获取Classes单位源代码的副本,并将其放入项目的源文件夹中。这将确保将此单元编译到您的程序中,而不是Delphi提供的程序。
  • 修改TComponent构造函数中的代码。所有流组件在创建期间都会通过此处。添加代码以记录类名,例如例如,使用CodeSite。
  • 运行程序,然后检查生成的日志以确定延迟。

如果您有许多组件,那么只知道该课程可能不会缩小范围。您可以将日志代码注入TComponent.SetName,而不是让您记录组件的名称。但是,基本的想法很简单,你应该能够将它应用到你的设置中,以便找到你需要的信息。