用于Delphi的分析器和内存分析工具

我最近从delphi4升级到delphi2009年。随着delphi4我一直使用普里莫兹Gabrijelcic GpProfile作为一个分析器和内存 侦查 由涡轮动力内存分析和泄漏debugging。 两者对我都很好。 但是我现在需要一些新的工具,可以和Delphi 2009一起工作。

delphi的分析/分析工具的领先者显然是AutomatedQA的AQTime 。 他们最近甚至吞下了Atanas Soyanov的Memproof ,据我所知 ,它是一个出色的免费内存分析工具,并将其function整合到AQTime中。 但是AQTime对个人程序员来说是非常昂贵的。 它实际上比成本更高的delphi2009成本更高!

所以我的问题是:在当前版本的Delphi中,是否有其他更便宜的选项来进行性能分析和内存分析?您是否满意和推荐?还是应该咬紧牙关,为AQTime付出巨额代价?


Adaline:早期的答复者似乎表示,已经包含在Delphi中的FastMMpipe理器非常适合查找内存泄漏。

那么,有没有什么好的替代品的源代码分析?

我很好奇的是迈克尔·阿道夫(Michael Adolph )的ProDelphi,它的价格不到AQTime的六分之一。 你用它吗? AQTime的价值是六倍吗?


钼2:我下载了AQTime和ProDelphi的试用版本。

AQTime起初有点令人难以置信,有点混乱。 花了几个小时find一些挂钩的技巧。

ProDelphi非常像我曾经习惯的GpProfile。 但它的窗户混乱和混乱,它不像GpProfile那么好。

对我来说,巨大的差异似乎是:

  1. ProDelphi更改您的代码。 AQTime没有。 如果出现问题,更改代码可能会破坏数据,但我对GpProfile的使用经验是,它从来没有发生过我。 另外一个用于AQTime。

  2. ProDelphi要求您closures优化。 但是你想要分析的是你的程序在运行的方式上进行优化。 另外一个用于AQTime。

  3. ProDelphi只能剖析function或程序。 AQTime可以下到个别的行。 AQTime加2。

  4. ProDelphi有一个免费的版本,将20个例程,其专业版的成本低于100美元。 AQTime是600美元。 Plus ProDelphi 4。

现在比分是4-4。 你怎么看?


第三名:Primoz Gabrijelcic计划再次获得GpProfile。 请参阅他对以下某些回复的评论。 他在StackOverflow上作为Gabr 。


4:看起来好像有可能是一个探查器解决scheme。 见安德烈的开放源码asmprofiler,如下所述 。

对于价格,你不能击败FastMM4作为内存跟踪器。 它使用简单但function强大,并与Delphi完美集成。
我想你知道,没有下载,安装或改变任何东西,只是把这一行

ReportMemoryLeaksOnShutDown := True; 

在你的代码的任何地方,将启用内存泄漏的基本报告。
如果您需要更多的崩溃信息,EurekaLog是我们使用的非常好的产品。 MadExcept也有良好的声誉…

具体来说,我们有AQTime。

至于gpProfile,你可以尝试和臭虫gabr SO更新…或去自己更新gpProfile,因为它是开源的 。 😉

我为Delphi制作了一个开源的分析器: http : //code.google.com/p/asmprofiler/

这不是完美的,但它是免费的,开源的:-)。

我做这件事的主要原因是因为我错过了一个确切的调用树。 例如,ProDelphi只存储所有调用的摘要和总计数,您不能看到在特定的时间调用特定的过程(或持续时间)。 它有一个时间表,所以你可以看到通话时间是如何随时间变化的。

也可以看看Eric Grange的采样分析器

我一直非常高兴与AQtime分析。

在使用GpProfile和AQTime之后,我发现这两种方法都能有效地find引起瓶颈的方法调用。

然而,AQTime也可以告诉我什么代码是造成这种情况,而不需要对我的源代码进行任何修改(尽pipeTD32debugging和debuggingdcus最好)。

我最近用它来加快一个约30倍的例程(由于不良使用内部库函数)

不过我自己并不需要付钱!

我们使用AQTime Pro,并对此感到满意。 Smartbear最近发布了一个完全免费的AQTime标准版 。 大部分function仍然存在,但是它们当然会被删除一些

对于一个分析器,你可以尝试从Gurock软件的SmartInspect。 我从来没有使用GpProfile,但很快看了一下它的function设置让我想起了SmartInspect。 有趣的是,它并没有声称是一个分析器,但它似乎与GpProfile一样多(除非我失去了一些东西)。 它支持delphi2009年,并有一个免费的试用,是AQTime便宜一点。

我同意你关于ProDelphi的界面,但是它做得足够好,我们很乐意继续使用它。 当我们遇到严重的性能问题时,我们只需要非常偶然地进行configuration,这总能帮助我们很快find问题。 非常好的性价比,迈克尔似乎很好,保持更新的新版本。

我build议的一件事是,因为它确实需要插入代码,所以在某种VCS中具有所有相关的代码是非常宝贵的。 当我们需要configuration文件时,我们:

  • 检查中的所有相关文件
  • 全部检查出来
  • 然后做我们需要的分析
  • 取消所有结帐,有效地回滚到我们所在的位置。

有没有人试过Delphi区域的Profiler组件? 它是与源代码的免费软件,它的写作说:

如果您正在寻找一种简单而准确的方法来免费测量您的代码的执行时间,TProfiler就是您所需要的。 TProfiler是一个非可视和debugging组件,使您能够在代码中创build指定的定时器。

TProfiler的每个定时器都提供以下信息:

计时器被激活的次数总计执行时间每个命中的平均执行时间第一次命中的执行时间最后一次命中的执行时间最小执行时间的命中最大执行时间的命中

确实如此,为了剖析我错过了Primoz的GpProfile,并没有find一个好的替代品。 我曾经试过AQTime,但是对于这个价格并不太满意。

为了跟踪内存泄漏和内存访问不良,我不能比FastMM4更快乐。

我一直在使用ProDelphi很久,发现它符合我的需求。

通过使用它提供的数据,我能够在系统性能改进方面取得惊人的成果。

对于小项目来说,免费版本没问题。

对于较大的项目,您需要(付费)专业版。

在这个较旧的答案 (“ 如何监视或可视化delphi应用程序的内存碎片 ”)中提到的FastMM4内存pipe理器保留了所有可以在运行时查询的分配列表(并使用包含的演示应用程序在网格中显示)。 它并不完全显示哪个对象泄漏,因为统计数据是按块大小。 但是,对于生产中的应用程序(例如服务器或服务)的长时间监控来说,这可能很有用。 我目前将它作为“VisualMM”插件集成到(商业)Web应用程序服务器框架中。