彩票走势图

AQtime性能分析工具改变了Rafal Platek Cream软件性能测试方式

转帖|实施案例|编辑:郑恭琳|2020-08-05 10:58:44.220|阅读 323 次

概述:AQtime 3改变了我测试应用程序性能的方式。回顾过去,我必须承认我花了太多时间进行许多不同的测试,并以某种史前的方式对应用程序进行性能分析。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

我是使用Delphi 6开发电子邮件分类程序的共享软件开发人员;其主要目标是打击垃圾邮件。该应用程序使用基于Naive Bayes Classifier的高级消息内容分析。我的问题与界面有关。我的软件处理的每封邮件都保存在一个文件夹中。该文件夹包含RAW格式的电子邮件。如果用户想要浏览消息历史记录,则他将打开一个历史记录页面,其中位于历史记录文件夹中的每条邮件消息都表示为TListView组件中的一项。TListView有四列,每列显示从历史记录文件夹分配给消息的不同数据。我的问题是,即使在快速的计算机上,创建列表也非常慢,因为在找到数据并将其显示在列表中时必须一次读取许多文件。这是一个非常令人讨厌的问题,我花了很多时间研究为什么列表视图刷新如此缓慢。

我决定寻找一种可与Delphi 6配合使用的工具,从而使我能够精确地分析自己的代码。对于称为“探查器”的工具来说,这类任务很典型。探查器监视应用程序,报告在功能上花费了多少时间(定时)以及调用了函数多少次(命中计数)。这可以使您了解应用程序代码中的性能瓶颈可能在哪里。


我记得我曾经使用过一个名为“MemProof”的工具,它是一个简单但功能强大的软件,旨在发现内存泄漏。我很好奇该工具是否仍在开发中,目前的状态如何。我希望我会发现MemProof现在也是一个事件探查器,因此我乐观地对Google执行了“MemProof”搜索,然后单击了第一个结果URL。我找到了什么?可以免费下载MemProof的页面;不幸的是,它仍然具有相同的功能。这是一个内存泄漏查找程序;可惜......但是列出MemProof的页面提供了更多工具。我决定花一些时间在那里阅读其他产品。我单击上方的“产品”菜单,找到了探查器!我非常高兴地读到:“AQtime 3——AQtime是用于全面分析Delphi,Visual Basic,Visual C++,C++ Builder,Intel C++,GCC和Visual Fortran应用程序的性能分析工具包。”我决定尝试一下,并开始下载免费试用版。在下载过程中,我阅读了AQtime 3页面,并看了一个非常令人兴奋的交互式教程。最终,我在硬盘上安装了该软件,并且可以安装并使用它。

下载安装AQtime Pro

安装很容易。几步,瞧!随时可用的强大分析器。因此,我认为,让我们尝试找出应用程序存在的问题。使用调试信息编译应用程序后,就可以使用AQtime 3对其进行分析了。


我对AQtime 3的初见让我有些害羞。我想有很多面板、选项卡和微型窗口,但是其中一定有一些想法。还有!让开发人员的生活如此轻松的好主意!当然,我必须阅读一些帮助(“入门”主题)以更好地理解这种哲学,但是很快,我便开始创建我的第一个新项目。

要创建一个项目,只需转到“文件”菜单并打开一个EXE文件。当然,还有其他选择,但是我目前不需要它们。如果EXE文件包含调试信息,则AQtime 3会创建一个树,其中包含已加载的应用程序中使用的所有单元,表单,函数,对象和其他内容。该树在左侧的“设置”选项卡上可用。在右边有一个“区域”窗口,我们可以在其中定义程序应分析的内容。默认情况下,“完全检查”处于打开状态。最好定义自己的区域,以便仅对所需的这些功能进行概要分析,而不对整个应用程序进行概要分析。因此,我关闭了“完全检查”开关,并创建了一个行级分析区域。

我的问题是我的应用程序源代码的MainWindow单元中的函数ShowMessagesHistory。因此,我展开了树,找到了MainWindow单元和我感兴趣的函数。我能够简单地将函数从树中拖放到我创建的概要分析区域中,就是这样。我需要分析该功能的所有内容均已准备就绪。哦,我差点忘了。AQtime 3不仅提供时序分析器,还提供更多功能!但是,目前我对时序分析器很感兴趣,因此我从分析器列表中选择了它。这样,我什至可以使用与Delphi:F9中相同的快捷方式开始项目的分析运行。

我的应用程序启动,并且我在UI中执行了一些操作以导致有问题的函数被调用。然后我停止了我的申请以及所看到的……我无话可说来描述我的幸福。在AQtime底部的“编辑器”面板中,显示了我的源代码。每行代码在装订线上都有一个百分比值。但这只是呈现结果的一种方法!结果窗口包括以下选项卡:“事件视图”,“图形”,“反汇编”,“详细信息”,“编辑器”和“调用图形”。这些中的每一个都显示许多有关概要分析过程的非常有用的信息。这里有每个配置文件例程所花费时间百分比的图表,这些图表显示了函数如何调用其他例程,甚至还有一个反汇编视图,显示了配置文件函数的每一行的机器代码!但最有趣的是“详细信息”面板和“编辑器”面板。他们提供了很多非常有用的信息。例如,显示的是分析函数中的所有行号,以及有关每行花费的时间,调用子例程的时间,工作时间百分比甚至点击次数的图表的信息,其中提供了有关多少行的信息线路被呼叫的次数。一看这些信息,我就知道大部分时间都在吞噬哪些代码。

就我而言,问题不在于函数本身,而在于从其调用的某些子例程中。因此,我转到了“设置”选项卡,并在应用程序树中找到了耗时的功能。我将它们添加到配置文件区域,并再次执行配置文件运行。现在,我详细检查了第二个功能中花费最多的时间。了解线路被调用了多少次也非常有帮助。我很容易注意到一条耗时的行:“仅在两次调用ShowMessagesHistory函数的情况下,“if FileExists(afilename)then”被调用了500次以上。最有趣的是,这条线对功能流程并不重要。我在Delphi代码中进行了必要的修改,然后再次编译了我的应用程序。我启动了它,进行了概要分析,新报告令人印象深刻。我的功能运行速度提高了10%!我花了很多时间分析其他行。它不仅使我的应用程序更有效,而且给了我很多乐趣。

AQtime 3改变了我测试应用程序性能的方式。回顾过去,我必须承认我花了太多时间进行许多不同的测试,并以某种史前的方式对应用程序进行性能分析。 AQtime 3不仅使我的生活更轻松,而且还节省了我的时间,并且首先在应用程序性能分析中提供了令人难以置信的结果。我已经成为Delphi开发人员超过7年了,在我的历史中也没有很多类似的时刻可以称为“革命性”,但是遇到AQtime 3的那一天绝对是其中之一!

Rafal Platek Cream软件




标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP