Nick Bradbury, the blogger/developer
creator of HomeSite, TopStyle and the awesome FeedDemon
RSS reader recently joined forces with NewsGator,
the leading RSS platform company. Once on board he found that the FeedDemon customer
base had grown considerably and customers were using FeedDemon in new and unexpected
ways that put stress on its performance. Nick and NewsGator needed a tool for finding
bottlenecks and improving overall speed, so they turned to AutomatedQA's AQtime
for help with FeedDemon 2.0.
Overview
FeedDemon 2.0 was a major redesign of Bradbury Software's popular feed reader for
Windows. With this new version, they had two primary goals in mind:
1. Make it easier for new users to get started subscribing to and reading feeds.
2. Make it easier for power users to deal with information overload.
Both of these goals required FeedDemon to execute very fast. "After all, new users
won’t bother trying out software they perceive as slow, and power users expect their
software to scale as they increase their demands upon it. At the same time, we also
knew that it had to be quick to market. The new version had already been delayed
due to an unexpected event that I had last year and although FeedDemon was created
by myself while I was a one-person company, it was acquired by NewsGator last year
and customers had high hopes for a new release. Being quick to market with a major
new release is tough enough, but add an acquisition to the mix and you’ve got a
very challenging situation," said Nick Bradbury, from NewsGator.
Choosing AQtime
"FeedDemon’s customer base had grown considerably since the first version, and people
were using it in ways I’d never considered. Given the importance of getting a new
version out, it was critical to find a tool that would locate bottlenecks throughout
FeedDemon without requiring a huge investment of my time," said Nick.
"Several years ago I had used a tool called MemProof to profile my applications,
but I needed something more powerful. I tried a couple of other profilers but found
that they were either too hard to use or too unreliable. AQtime had already generated
considerable buzz with developers as being a worthy replacement for MemProof, so
I gave it a try and it did exactly what I needed."
Using AQtime to Measure Performance
"When I’m wearing my 'developer hat' I regularly use AQtime to measure the performance
of new critical code. Like most developers, I try to write code that’s optimized
for performance right off the bat, and like most developers I sometimes find that
my optimizations didn’t predict the real-world usage of my code. Profiling new routines
with AQtime would sometimes be a humbling experience, because I’d discover that
my code wasn’t as fast as I thought, but I’d rather be told that by a performance
profiler than a customer," said Nick.
"In addition, before every new beta release I’d wear my 'customer hat' and simply
use FeedDemon for several hours just as any end user would, except I run it with
AQtime. This is enormously helpful in locating performance bottlenecks, because
it enables me to see not only how specific routines perform, but also how often
those routines are called in normal usage. I am often surprised to find that the
bottlenecks weren’t where I thought they would be. In many cases, they are in routines
that I didn’t think would affect performance as they were written for clarity rather
than speed."
"For example, FeedDemon uses dozens of string-handling routines that I wrote for
another project. 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. After the routine was rewritten, FeedDemon seemed to be much more
responsive overall and AQtime, once again, proved to be correct."
Performance Types
Nick looks for two key performance indicators: real performance, or the actual execution
time of a routine, and perceived performance, how fast a program feels to the end
user. "One area where perceived performance is critical is at startup time. If an
application appears to start slowly it will be regarded as slow and bloated regardless
of how fast it really is," said Nick.
"I spent quite a bit of time making sure that FeedDemon started quickly, and this
is trickier than you might think because there are so many things that can affect
load time. AQtime’s triggers are very handy here, because they enable me to see
exactly which routines are being called at startup before the end user actually
sees the main application window. By re-arranging and/or rewriting these routines,
I am able to significantly increase how quickly FeedDemon appears to start."
AQtime Helps Improve Memory Allocation
Nick said, "As a developer, AQtime has provided first-hand experience as to how
things like memory allocation affect performance. There were a number of routines
in FeedDemon that performed poorly simply because of how they allocated memory.
Often because they relied on the compiler to do it for them. AQtime has also enabled
me to get a better view of my applications as a whole. They’re not simply a collection
of functions that operate independently, but are instead a group of interrelated
routines that interact in ways I might not anticipate."
AQtime Saves Time and Money
"AQtime has saved me time by helping me find where my software performs poorly,
which translates to saving me money as well. Not having to spend an inordinate amount
of time locating bottlenecks means I can spend more time designing the features
customers are asking for," said Nick.
About NewsGator Technologies
NewsGator Technologies is the leading RSS
platform company. Headquartered in Denver, NewsGator develops and markets RSS aggregation
solutions for individual end users, enterprises, publishers and other online content
providers. People use NewsGator aggregators to access news, information, podcasts
and other relevant content efficiently and effectively. NewsGator readers are accessible
via the Web, Microsoft Outlook®, mobile devices, and PC/Mac desktop clients.
All of the products synchronize seamlessly, enabling users to easily switch between
NewsGator aggregators.
About AQtime
AQtime is a performance profiler and memory
debugger engineered to give developers unparalleled insight into all aspects of
the performance of their applications. AQtime provides a single solution for detecting
performance bottlenecks and memory leaks within managed, unmanaged and mixed-code
applications. AQtime supports Microsoft Visual Studio, .NET, ASP.NET, C++, VB, Borland
Delphi, Borland C++, and more.
Learn more about AQtime and download a free
trial.