Let me introduce myself briefly. My name is Oliver Schneider and I currently work, as what would be best described by the term "research developer", for FRISK Software International, creators of F-Prot Antivirus. My trade is writing and reverse engineering of software, where the latter is usually employed to analyze malware (with a personal emphasis on kernel mode rootkits). In my spare time I enjoy mostly working on private programming projects, reading books and learning languages or trivia about them. Three of the OpenSource projects I am involved in are
- WinDirStat, which visualizes the hard disk content on a Windows system
- JEDI API Lib, which provides Windows API header conversions to Delphi programmers, and
- UltraVNC of which I run the support forum and where I am writing on an OpenSource replacement of the (currently) proprietary mirror driver
Given the fact that WinDirStat is written in C++ but JEDI revolves around Delphi discloses one fact about me: I use more than one IDE/compiler. Comparison of the different professional profiler products on the market will quickly reveal that AQTime is the only product which combines support for a large number of different IDEs/compilers with a rich feature set
But enough about me. Let me share my first impressions of the full version of AQTime 5.x 32bit with you.
Fetching the file from the download page was fairly easy and the installation process was streamlined as I had expected it. There is nothing worth noting that would not be self-explanatory during the installation process. Well done, AutomatedQA!
After the installation I was of course curious how it all looked integrated into the IDEs. So I launched Visual Studio and Borland Developer Studio one after another. In both IDEs I spotted the Profile main menu item pretty quickly and started to delve into it. I must confess that I like the menu under Visual Studio a lot better since it is more sleek. Take a look at them yourself.
Borland Developer Studio
Note that the BDS version implements the profiler choice as a submenu, while the VS one implements it as a combo box inside the menu item - very nifty. However, the functionality appears to be equivalent both from what is exposed through the menu and what is offered in the options dialog and behind other menu items.
The fact that the integration into the IDE closely resembles the standalone version of AQTime makes it fun to switch between the different IDEs and the standalone version.
Of course I was curious what AQTime could do for me, or for WinDirStat to be more exact. There are several bottle necks in WinDirStat that cannot be attributed to disk I/O. So I used the AQTime extension inside Visual Studio and created an AQTime project out of the debug configuration for WinDirStat. Selecting the "Performance Profiler" I thought I was set to go. And WinDirStat started. I selected a medium-sized directory with fairly many files (the Cygwin installation, if you are curious) and gave it a shot. To my disappointment WinDirStat threw ASSERTs at me after the actual scanning process was finished but before the treemap was being shown. However, I should have known better than blaming AQTime, i.e. turn on my brain first ... but to no avail - it was late at night already (or should I say early in the morning? ;-)).
It was the next day that I had to admit that the ASSERTs were part of WinDirStat's source code and not a problem of AQTime. After some rest I was set to give it another shot. So I noted down all the ASSERTs and commented them temporarily out, making sure to mark every single one for later inspection. After rebuilding WinDirStat everything worked flawlessly and I got first results about some bottle necks in the summary tab. Some of the bottle neck routines were expected, others were rather surprising. However, that got me started on the AQTime help file.
Although the reports and summary are self-explanatory in many respects, the results themselves are not always. I should also note that WinDirStat makes use of multiple threads. As I write this, the AQTime help file is still opened, as well as are the profiling results for WinDirStat. Once I read up on how to optimize my profiling approach, I am going to write up some more articles and include hints beyond this one: start reading the How to ... section in the help before the Getting Started section.
I am already curious to see what the other profiler types of AQTime will be able to reveal ...
PS: Bear with me, English is not my native language.