对于性能测试,我需要一种方法来测量表单从 DFM 加载其定义所需的时间。所有现有表单都继承一个自定义表单类。
为了捕捉当前时间,这个基类需要重写方法作为“扩展点”:
- 反序列化过程的开始
- 反序列化后(可以通过重写
Loaded
过程来实现) OnFormCreate
事件执行前的那一刻
所以日志TMyForm.Create(nil)
可能看起来像:
- 00.000 instance created
- 00.010 before deserialization
- 01.823 after deserialization
- 02.340 before OnFormCreate
哪种 TObject(或 TComponent)方法最适合?可能在表单创建过程中还有其他的扩展点,欢迎提出建议。
背景:对于我们的一些具有非常基本结构的应用程序表单(带有一些 PageControls 和 QuantumGrids),我意识到这不是 OnFormShow 中的数据库访问和其他内容,而是花费了大部分时间(大约 2 秒)的构造,这使得我想知道这段时间都花在了哪里。作为参考对象,我还将构建一个具有类似结构但没有代码或数据模块连接的模拟表单,并测量其创建时间。