• Products
    Test Automation
    BitBar Cloud-Based Web and Mobile App Testing TestComplete Automated UI Functional Testing
    App Stability Management
    Bugsnag Mobile, Web, & Backend Error Monitoring
    Test Management + BDD
    CucumberStudio Design Features & Tests Using BDD   Zephyr Standalone & Jira Test Management
    API Lifecycle
    AlertSite Global, Synthetic API Monitoring ReadyAPI Automated API testing platform SwaggerHub Design, Model, & Share API Definitions Pactflow Complete contract testing
    Performance Testing
    LoadNinja Automated UI Performance Testing
    Collaboration
    Collaborator Code, Document, & Artifact Review
    Open Source
    Cucumber Open Validate Specs Against Your Code SoapUI Create & Execute API Test Automation Swagger Interact With API Resources Pact Consumer-driven contract testing VIEW ALL PRODUCTS
  • Solutions
    Solutions
    API Lifecycle Microservices Service Virtualization DevOps Code Quality Agile Testing Continuous Testing
    Automated Testing Functional Testing API Testing End-to-End Testing Performance Testing Test Management API Monitoring
    See All Solutions
    Integrations
    CI/CD Source Code Management Collaboration Cloud
    See All Integrations
  • Resources
    Support
    AlertSite AQTime Pro BitBar Collaborator CucumberStudio LoadComplete LoadNinja QAComplete
    ReadyAPI SwaggerHub TestComplete TestEngine TestLeft Zephyr Enterprise Zephyr Squad Zephyr Scale
    New Support Case
    Manage My Cases
    Education
    Case Studies Webinars eBooks
    Academy Community Docs
    Blog
    Recent Posts
    The 5 Gaps You May Not Realize Are Missing From Your UI Test Automation Strategy
    SmartBear + Test Management for Jira: Delivering testing solutions and BDD within Jira
    About Us
    News
    Partners
  • Careers
  • Cart
  • EN DE
  • Login
  • Try Any Tool for Free
    TestComplete ReadyAPI BitBar LoadNinja TestLeft AlertSite Collaborator AQTime Pro CucumberStudio SwaggerHub Zephyr Enterprise Zephyr Squad Zephyr Scale Capture for Jira Pactflow

NewsGator

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.

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.

 NewsGator
Key Products

Webinar
SoapUI 101: The Beginners Guide to Functional API Testing
Ever needed a step-by-step walkthrough on functional testing in SoapUI? We heard you, and
Webinar
6 Steps to Achieving Performance Nirvana in 2016
Performance improvements are multifaceted: they can be challenging and sometimes
1 hour 2 minutes
Webinar
6 Steps to Become a .Net Performance Expert
To get you started, we are offering a tutorial-like webinar for testing performance
60 minutes
  • 0
  • 1
  • 2
Explore SmartBear Products
  • AlertSite
  • AQTime Pro
  • BitBar
  • Bugsnag
  • Capture for Jira
  • Collaborator
  • Cucumber for Jira
  • CucumberStudio
  • Cucumber Open
  • LoadNinja
  • Pact
  • Pactflow
  • ReadyAPI
  • SoapUI
  • Swagger
  • SwaggerHub
  • TestComplete
  • TestEngine
  • TestLeft
  • Zephyr
  • About Us
  • |
  • Careers
  • |
  • Solutions
  • |
  • Partners
  • |
  • Responsibility

  • Contact Us
  • |
  • +1 617-684-2600 USA
  • |
  • +353 91 398300 EUR
  • |
  • +61 391929960 AUS
  • |
© 2022 SmartBear Software. All Rights Reserved.
  • Privacy
  • |
  • Terms of Use
  • |
  • Site Map
  • |
  • Website Terms of Use
  • |
  • Security
Close

Choose your product to log in to

AlertSite
BitBar
CrossBrowserTesting
CucumberStudio
LoadNinja
QAComplete
SwaggerHub
SmartBear Community
Case Management Portal
License System