Ant*_*uni 6 delphi performance aqtime
在AQTime for Delphi中,它通过使用区域和触发器等来快速到达故障点.但在我看来,特别是如果你在要分析的区域中有很多代码,那么执行速度会急剧下降即使没有打开配置文件.
例如,如果我想在程序流程的后期分析一个特定的例程,但是不知道那里调用了什么,我认为将此例程仅作为触发器并将线程的初始状态设置为Off,然后选择"按常规/行完全检查".但是,当我执行此操作时,程序执行在触发例程被触发之前已经大大减慢.
例如,如果"准备流程"在没有AQTime的情况下花费大约5分钟,那么当我在禁用分析时运行它时,它已经运行了30分钟,并且即使我知道甚至还没有达到触发器,它仍然会运行.
我知道我可以尝试通过减少已分析的例程/行的数量来解决这个问题,但这对我来说并不是一个好的解决方案,因为一旦我到达实际的触发例程,我想分析所有这些.
另一个通常更好的解决方法是在没有AQTime的情况下启动应用程序,然后在"准备流程"完成后使用"附加到进程",但只有当执行在适当的位置暂停GUI或以其他方式提供合适的时间范围时,这才能正常工作做附件.在所有情况下都不是这种情况.
有关为什么会出现这种情况的任何评论,除了尝试减少区域中的代码或稍后附加到流程之外还有什么可做的吗?
那么,您当然可以尝试我的免费分析器:-)
http://code.google.com/p/asmprofiler/
它可以进行仪器和采样分析.它没有AQTime的所有功能,但至少它是免费的(如果你停止分析,会有非常轻微的性能损失).
AQTime 是一个仪器分析器。在运行时,它基本上围绕您选择使用自己的代码进行分析的每个方法(或行,具体取决于您配置选项的方式),有点像这样:
begin
DoStuff();
end;
Run Code Online (Sandbox Code Playgroud)
...变成:
begin
AQTimeEnter('MethodName');
try
DoStuff();
finally
AQTimeLeave('MethodName');
end;
end;
Run Code Online (Sandbox Code Playgroud)
它直接在可执行文件中执行此操作,而不是通过修改源代码,但效果本质上是相同的。当分析处于活动状态时,这些调用会产生相当大的开销,因为它们会触发大量信息并记录大量信息。
当分析处于非活动状态时,开销会减少,因为它们不记录任何内容。但是,方法调用本身以及 try/finally 块仍然存在一些开销。
我不知道除了减少配置文件之外,您是否可以在 AQTime 中做任何事情来改进这一点。但是,您也可以尝试采样探查器,它对探查器本身的开销较小,但可能会错过对快速执行的例程的调用。