我最近从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是否值得付出六倍的费用?
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。
答案 0 :(得分:35)
对于价格,你无法击败FastMM4作为内存跟踪器。它使用简单,功能强大,与Delphi完美集成 我想你知道,如果没有下载,安装或更改任何其他内容,只需添加此行
ReportMemoryLeaksOnShutDown := True;
代码中的任何位置,都会启用内存泄漏的基本报告 如果您需要更多像崩溃信息,EurekaLog是我们使用的非常好的产品。 MadExcept也有良好的声誉......
具体来说,我们有AQTime。
至于gpProfile,您可以尝试在SO上发布gabr来更新...或者去update gpProfile yourself as it is open source。 ; - )
答案 1 :(得分:30)
我为Delphi制作了一个开源分析器: http://code.google.com/p/asmprofiler/
它并不完美,但它是免费和开源的: - )。
我做的主要原因是因为我错过了一个确切的呼叫树。 例如,ProDelphi仅存储所有呼叫的摘要和总计数, 你无法看到特定时间的特定程序(或时间) 持续时间)。 它有一个时间图表,因此您可以看到通话时间如何随时间变化。
答案 2 :(得分:24)
答案 3 :(得分:7)
我对AQtime的分析非常满意。
答案 4 :(得分:4)
使用了GpProfile和AQTime后,我发现两者都能有效地找到导致瓶颈的方法。
然而,AQTime还可以告诉我是什么行代码导致这种情况,而不对我的源代码进行任何更改(尽管它最适合TD32调试和调试dcus)。
我最近用它来加速一个例程大约30倍(由于内部库函数的使用不当)
但是我自己没有必要付钱!
答案 5 :(得分:3)
我们使用AQTime Pro并对此感到满意。 Smartbear最近发布了一个完全免费的AQTime standard edition。大多数功能仍然存在,但它们当然具有removed a bit
答案 6 :(得分:2)
我同意你关于ProDelphi的界面,但它确实做得很好,我们很乐意继续使用它。当我们遇到严重的性能问题时,我们只需要偶尔进行分析,它总能帮助我们很快找到问题所在。非常物有所值,迈克尔似乎很高兴为新版本保持更新。
我建议的一件事是,因为它确实需要插入代码,所以在某种VCS中拥有所有相关代码是非常宝贵的。当我们需要描述时,我们:
答案 7 :(得分:2)
有没有人试过the Profiler component at Delphi Area?它是免费软件源代码,它的文字写道:
如果你正在寻找一个轻松的 准确测量执行时间的方法 你的代码是免费的,TProfiler是 你需要什么。 TProfiler是一个 非可视和调试组件 这使您可以创建命名 代码中的计时器。
TProfiler的每个计时器提供 以下信息:
计时器的次数 激活(命中计数)总数 执行时间平均执行 每次点击的时间执行时间 第一次点击执行时间就可以了 最后一击最小的击中 执行时间最大命中 执行时间
答案 8 :(得分:1)
这是真的,对于剖析我错过了Primoz的GpProfile,并没有找到一个好的替代品。我曾经尝试过AQTime,但对价格并不满意。
为了跟踪内存泄漏和狡猾的内存访问,我不能比使用FastMM4更快乐。
答案 9 :(得分:1)
对于个人资料工作者,您可以尝试使用Gurock Software的SmartInspect。我从未使用过GpProfile,但很快看了一下它的功能集让我想起了SmartInspect。有趣的是,它并不声称是一个分析器,但它似乎与GpProfile一样多(除非我遗漏了一些东西)。它支持Delphi 2009,并且免费试用,比AQTime便宜一点。
注意:SmartInspect是记录器而不是分析器。
答案 10 :(得分:1)
我一直在使用ProDelphi很长一段时间。发现它符合我的需求。
通过使用它提供的数据,我已经能够在系统性能改进方面取得惊人的成果。
对于小型项目,免费版本很好。
对于较大的项目,您需要(付费)专业版。
答案 11 :(得分:0)
FastMM4内存管理器mentioned in this older answer(“如何监视或可视化delphi应用程序的内存碎片”)保留所有可在运行时查询的分配列表(并显示)在网格中使用包含的演示应用程序)。它没有准确显示哪个对象泄漏,因为统计信息是每个块大小。但它对于长期监视生产中的应用程序(例如服务器或服务)非常有用。我目前正在将其作为“VisualMM”插件集成到(商业)Web应用程序服务器框架中。