During FeedDemon 2.0's development, I increasingly relied on AutomatedQA's AQtime to help locate performance bottlenecks in my code - which it did very well. This case study on AutomatedQA's site discusses how FeedDemon benefited from AQtime's profiling and memory allocation debugging tools.
Here's a snippet from the case study:
"FeedDemon uses dozens of string-handling routines that I wrote for another project [TopStyle]. These routines performed fine with the other application, but FeedDemon is extremely string intensive so performance problems in these routines had a far greater impact on FeedDemon than on my other project. Using AQtime I discovered that a seemingly innocuous routine that is used to remove HTML tags from a string was having a significant impact on FeedDemon’s performance. It was among the most poorly performing routines in FeedDemon, yet I never even considered that it would be a problem."
Nick,
Interesting. I'm astonished to hear that AQTime supported Delphi -- or did they tap in at the Windows API level?
*Ex Turbo Pascal guy here; thinks nostalgically of the past days from time to time*
Scott
Posted by: Scott Johnson of Ookles, Formerly of Feedster | Friday, June 09, 2006 at 03:45 AM
AQtime actually works very well with Delphi - it even displays the Delphi source code for each routine, along with the hit count and % time of each line of code.
Posted by: Nick Bradbury | Friday, June 09, 2006 at 07:45 AM
I'd love to hear how you used AQTime for performance profiling. We use it in our Delphi applications but currently only for memory allocation checks. We haven't played around with the performance profiling aspects, which I know is more of it's strong suite.
I love reading these more developer-focused articles, knowing something about the development history and style of what I consider a very succesful and commercial product.
Scott Johnson: I believe AQTime actually started as a Delphi-only or at least Delphi-focused product. I also believe it was either a decendent or at least heavily influenced by Atanas's MemProof.
Posted by: Shawn Oster | Friday, June 09, 2006 at 02:57 PM
Shawn, the case study briefly describes how I use AQtime's profiling features. The most common thing I do is create an "area" containing only FeedDemon code (ie: no Delphi routines), and then simply run FeedDemon with AQtime to uncover the performance bottlenecks.
Posted by: Nick Bradbury | Saturday, June 10, 2006 at 10:30 AM