AQTime是如何做到的?

lke*_*ler 12 performance profiler profiling aqtime

我一直在测试性能和内存分析器AQTime,看看是否值得为我的Delphi应用程序花费那么大的$$$.

让我感到惊讶的是它如何在不修改应用程序源代码的情况下为您提供源行级别性能跟踪(包括每行执行的次数以及该行所用的时间),并且不会为此添加过多的时间调试运行.

他们如此高效地这样做的方式让我觉得这里可能会使用一些我不知道的技术/技术,这对我们来说是有用的.

你知道他们用什么样的方法来逐行捕获执行而不需要更改代码吗?

是否还有其他分析工具也可以进行非侵入式逐行检查,如果有,他们是否使用相同的技术?

小智 9

我为Delphi制作了一个开源分析器,它也是这样做的:http: //code.google.com/p/asmprofiler/

它并不完美,但它是免费的:-).也使用了Detour技术.它存储每个调用(您必须手动设置要配置的功能),这样它就可以创建一个精确的调用历史树,包括时间图(!).

  • 谢谢你的出色工作,安德烈.我要试一试.Delphi社区可以真正使用在Delphi的IDE中集成的分析器.既然您已经获得了开源,那么您可能需要考虑将其捐赠给Embarcadero,他们可能会将其包括在内.或以每个200美元的价格推销它. (2认同)

bk1*_*k1e 7

这只是猜测,但也许AQtime基于一种类似于Microsoft Detours的技术

Detours是一个用于在x86,x64和IA64机器上检测任意Win32函数的库.Detours通过重写目标函数的内存代码来拦截Win32函数.

  • 有人称之为"挂钩".MadCodeHook是Delphi的一个工具,可以让你记录代码.有趣的是,代码挂钩的一个限制是你不能挂钩太短而不允许内联修改的函数.AQTime报告的函数太小而不允许挂钩,你所能做的就是忽略它们.这让我觉得可以肯定的是,挂机(仪表,拦截)就是AQTime所做的. (4认同)