首页 文章

Delphi的Profiler和内存分析工具[关闭]

提问于
浏览
54

我最近从Delphi 4升级到Delphi 2009.使用Delphi 4,我一直使用GpProfile by Primoz Gabrijelcic作为分析器,Memory Sleuth by Turbo Power用于内存分析和泄漏调试 . 两者都适合我 . 但我现在需要能够与Delphi 2009配合使用的新工具 .

Delphi的性能分析/分析工具的领导者显然是AQTime by AutomatedQA . 他们最近甚至吞并了Memproof by Atanas Soyanov,我知道这是一个优秀的免费内存分析工具,并将其功能整合到AQTime中 . 但AQTime对于个人程序员来说非常昂贵 . 它实际上比升级到Delphi 2009成本更高!

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


Addenum:似乎早期的回答者表明已经包含在Delphi中的FastMM管理器非常适合发现内存泄漏 .

那么,源代码分析有什么好的选择吗?

我很好奇的是ProDelphi by Michael Adolph,这不到AQTime成本的六分之一 . 你用它吗? AQTime值六倍的 Value 吗?


Addenum 2:我下载了AQTime和ProDelphi的试用版 .

AQTime起初有点压倒性,有点令人困惑 . 花了几个小时才找到了解决它所需的一些技巧 .

ProDelphi非常像我习惯的GpProfile . 但是它的窗户混乱而且令人困惑,而且它不如GpProfile那么好 .

对我来说,差异似乎是:

  • ProDelphi更改您的代码 . AQTime没有 . 如果出现问题,更改代码可能会损坏您的数据,但我对GpProfile的体验是它从未发生在我身上 . 加一个AQTime .

  • ProDelphi要求您关闭优化 . 但是你想要描述的是你的程序,它的优化程度,运行方式 . 加一个AQTime .

  • ProDelphi只能剖析功能或程序 . AQTime可以归结为单独的线路 . AQTime加2 .

  • ProDelphi有一个免费版本,可以分析20个例程,其专业版的成本不到100美元 . AQTime是600美元 . ProDelphi加4 .

目前比分是4-4 . 你怎么看?


Addenum 3:Primoz Gabrijelcic计划让GpProfile再次运作 . 请参阅他对以下一些回复的评论 . 他在StackOverflow上作为Gabr .


Addenum 4:看起来似乎可能有一个分析器解决方案 . 见Andre's open source asmprofiler, described below .

12 回答

  • 1

    对于价格,你无法击败FastMM4作为内存跟踪器 . 它使用简单但功能强大且与Delphi完美集成 .
    我想你知道,没有下载,安装或改变任何其他东西,只需要这一行

    ReportMemoryLeaksOnShutDown := True;
    

    代码中的任何位置,都将启用内存泄漏的基本报告 .
    如果您需要更多像崩溃信息,EurekaLog是我们使用的非常好的产品 . MadExcept也有良好的声誉......

    对于具体的分析,我们有AQTime .

    至于gpProfile,你可以在SO上尝试和错误gabr进行更新......或者去和update gpProfile yourself as it is open source . ;-)

  • 3

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

    它并不完美,但它是免费和开源的:-) .

    我做的主要原因是因为我错过了一个确切的调用树 . 例如,ProDelphi仅存储所有呼叫的摘要和总计数,您无法查看特定时间内特定程序的调用(或持续时间) . 它有一个时间表,因此您可以看到通话时间如何随时间而变化 .

  • 30
  • 0

    我对AQtime的分析非常满意 .

  • 35

    使用GpProfile和AQTime后,我发现两者都能有效地找到导致瓶颈的方法 .

    但是,AQTime还可以告诉我是什么行代码导致了这一点,而不对我的源代码进行任何更改(尽管它最适合TD32调试和调试dcus) .

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

    但是我自己没有必要付钱!

  • 7

    我们使用AQTime Pro并对此感到满意 . Smartbear最近发布了一款完全免费的AQTime standard edition . 大多数功能仍然存在,但它们当然有removed a bit

  • 4

    我同意你关于ProDelphi的界面,但它做得很好,我们很乐意留下来 . 当我们遇到严重的性能问题时,我们只需要偶尔进行分析,它总能帮助我们很快找到问题所在 . 非常物有所值,迈克尔似乎很高兴为新版本保持更新 .

    我建议的一件事是,因为它确实需要插入代码,所以在某种VCS中拥有所有相关代码是非常宝贵的 . 当我们需要描述时,我们:

    • 检查所有相关文件

    • 全部检查出来

    • 然后进行我们需要的分析

    • 取消所有结帐,有效地回滚到我们所在的位置 .

  • 2

    有没有人试过the Profiler component at Delphi Area?这是免费软件的源码,它的写作说:

    如果您正在寻找一种简单而准确的方法来免费测量代码的执行时间,那么TProfiler就是您所需要的 . TProfiler是一个非可视化和调试组件,使您可以在代码中创建命名计时器 . TProfiler的每个计时器提供以下信息:计时器被激活的次数(命中计数)总执行时间每次命中的平均执行时间第一次命中时的执行时间上次命中时的执行时间执行时间最短的命中time具有最长执行时间的命中

  • 1

    这是真的,对于剖析我错过了Primoz的GpProfile,并没有找到一个好的替代品 . 我曾经尝试过AQTime,但对价格并不满意 .

    为了跟踪内存泄漏和狡猾的内存访问,我不能比使用FastMM4更快乐 .

  • 2

    我已经使用ProDelphi很长时间了,发现它符合我的需求 .

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

    对于小型项目,免费版本很好 .

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

  • 1

    对于分析器,您可以尝试使用Gurock Software的SmartInspect . 我从未使用过GpProfile,但很快看了一下它的功能集让我想起了SmartInspect . 有趣的是,它并不声称是一个分析器,但它似乎与GpProfile一样多(除非我遗漏了一些东西) . 它支持Delphi 2009并且有免费试用版,比AQTime便宜一点 .

    Note :SmartInspect是一个 Logger ,而不是一个分析器 .

  • 24

    FastMM4内存管理器mentioned in this older answer(“ How to monitor or visualize memory fragmentation of a delphi application ”)保留所有可在运行时查询的分配列表(并使用随附的演示应用程序显示在网格中) . 它没有准确显示哪个对象泄漏,因为统计信息是每个块大小 . 但它对于长期监视 生产环境 中的应用程序(例如服务器或服务)非常有用 . 我目前正在将其集成到(商业)Web应用程序服务器框架中作为'VisualMM'附加组件 .

相关问题