• Products
    API hub
    • Design

      Collaborative API Development

    • Portal

      API Developer Portal

    • Explore

      Validate API Functionality

    • Testing

      Automated API Testing

    • Contract Testing

      API Integration Testing

    ReadyAPI

    Automated API Testing Platform

    Test hub
    • TestComplete

      Automated UI Functional Testing

    • BitBar

      Real Browser and Device Cloud

    • LoadNinja

      Automated UI Performance Testing

    • Reflect

      Codeless Automation with Gen AI

    • QMetry

      Test Management with Gen AI

    Zephyr

    Jira-Native Test Management

    Insight hub
    • Performance Monitoring

      Resolve Bottlenecks & Improve Responsiveness

    • Error Monitoring

      Debugging & Application Stability

    • Distributed Tracing

      Trace Issues Across Services

    AlertSite

    Global, Synthetic API Monitoring

    View All Tools

    Empowering QA Leadership: How User-friendly Automation Tools Drive QA Team Success

    View All Products →
  • Solutions
    Solutions
    API Lifecycle Observability Performance Testing
    Test Management UI Testing
    Integrations
    Source Code Management Collaboration
  • Resources
    Support
    AlertSite AQTime Pro BitBar Collaborator CucumberStudio LoadComplete LoadNinja PactFlow QAComplete
    ReadyAPI SwaggerHub SwaggerHub Explore TestComplete TestEngine TestLeft VisualTest Zephyr Zephyr Enterprise
    New Support Case
    Manage My Cases
    Resources
    Case Studies Webinars eBooks White Papers
    Academy Community Docs
    Blog
    Recent Posts
    What is Visual Testing?
    How to Use ChatGPT in Your Automated Tests
    About Us
    News
    Partners
  • Careers
  • Cart
  • Login
  • Try Any Tool for Free
    API Hub Insight Hub TestComplete ReadyAPI BitBar VisualTest Collaborator Zephyr Zephyr Essential Zephyr Enterprise LoadNinja AlertSite

Borland

Borland Software is a global leader in platform-independent application lifecycle management solutions that partners with customers to help them achieve increasing levels of Software Delivery Optimization. With more than 1,400 employees worldwide and operations in more than 20 countries, Borland has served over 95 percent of global 2000 companies with best-in-class solutions for more than 20 years. Borland is committed to the ongoing delivery of software, services, and partnerships to help our customers cost-effectively transform their software delivery processes, with minimum risk and maximum ROI.

Borland® Delphi® 2006, now part of Borland Developer Studio, is a complete environment for visual design, compilation, and debugging of Windows applications. Programs can be targeted for Win32 and Microsoft .NET applications using a common source code base. The Integrated Development Environment (IDE) provides rapid application development with support for Delphi, C, C++, and C# programming languages.

Overview

Delphi 2006 is the 10th Windows release of the product since the introduction of version 1.0 in 1995. "It’s grown and evolved substantially over those 10 releases and it is considerably more complex than the fairly basic Rapid Application Development (RAD) tool it was when first released" says Mark Edington, Principal Engineer at Borland. "Over the years, this added complexity has resulted in some bottlenecks surfacing while working in the IDE and in other areas of the product. For the release of Delphi 2006, Borland committed to improving the product's quality and performance. Isolating and addressing performance issues with a product as complex as Delphi absolutely required the use of a capable and powerful profiling tool like AQtime."

AQtime is the first profiler available to the Delphi developer community that truly supports all of the product’s unique profiling challenges. It supports all programming languages supported by Delphi as well as supporting both Win32 and managed .net code in the same profiling session.

"I typically use the AQtime performance profiler to profile very specific operations in our product that could benefit from optimizations. After analyzing the profiler results, I usually make one or more code changes and then run the profiler again and compare the results."

AQtime Tackles the Problem

In Delphi 2006, Mark recently ran into some very unfamiliar code with a difficult to debug drag-and-drop problem. He had absolutely no idea where or what that code problem was. "I hadn't debugged drag-and-drop code, and I'm sure anyone who has appreciates the challenges of using the debugger to figure out what is going on during a drag operation. The big problem is that if you want to set a breakpoint in the code that executes when the drag operation begins, you won't be able step though all of the code that needs to execute to complete a drop operation because the mouse messages will not be processed properly by the application while it is stopped in the debugger. As soon as the breakpoint hits, your drag operation is basically cancelled."

"The bug I was working on was being unable to rearrange items in the tool palette using the mouse. On certain systems, the tool palette would simply not allow dragged items to be dropped."

"In this situation, the Delphi IDE uses "OLE" drag and drop which means much of the code that executes during a drag operation is invoked by callbacks from the operating system. Since this callback is called indirectly, it is more difficult to identify. It's awfully tough to set a breakpoint on a line of code when you don't know where it is! The problem was further complicated by the fact that code that should have been executing wasn’t getting called, so even if I knew where to put the breakpoint it wouldn't have worked."

"I decided to use AQtime to tackle this problem. Not only is it a powerful code profiler, it is also a very useful debugging tool. The results it generates show which functions are called, how many times they’re called, and how long each call takes. In addition, it provides a call stack that clearly shows which functions call other functions. Another nice thing about the call stack that AQtime provides is its “static” nature. You don’t have to be sitting on a breakpoint with the program running to review it as you normally would with a debugger."

Debugging with AQtime

Mark found a system that was not affected by the bug and profiled the drag and drop operation. "This gave me a "good" set of profiler data. I copied the results to a system that couldn’t perform the drag and drop. Using the same AQtime project with the good results, I executed the same steps, which failed, under the profiler. This gave me a “bad” set of profiler data. I then used a feature in AQtime which allows you to compare these two sets of results. That allowed me to quickly see which methods were not being called on the computer affected by the bug. Finally, I analyzed the call stacks from each profiler run to determine where the execution paths diverged."

At this point, Mark had the information he needed to jump back into the debugger and set some breakpoints and figure out exactly what was going wrong. "This took me just a couple of minutes, now that I had a clear picture of what the expected code path was. From there I made a few code changes to fix the bug. I'm sure there were probably other ways I could have attacked this bug, and had I gone into this exercise with more background in drag-and-drop code I probably would have known right where to look for the problem without any extra help. Fortunately, having AQtime in my toolbox I knew I could get the job done with this approach."

"It's incredibly useful to have a “static” call stack that you can examine after the fact. You can walk up and down the stack and review the associated code in the code editor window and review any part of the profiler results without having to run the program. Another big advantage of the call stack AQtime provides is that it traverses the .net managed/unmanaged code interop boundary showing you a full picture of the code execution. The IDE debugger only allows you to see either .net or Win32 calls in the call stack, not both.

"As a software developer, AQtime has been one of the most exciting and interesting new tools to go into my toolbox in a long time. The “benefit” is that this tool helps me get a very specific job done and it works VERY well."
— Mark Edington, Principal Engineer at Borland

AQtime Makes It Easy

"Performance is an important element of a product’s quality. Virtually all of the performance optimizations that we have made in Delphi 2006 with the help of AQtime, have resulted in higher quality levels.", said Mark, "AQtime makes it very easy to quickly obtain useful profiling data for any operation that needs to be optimized. In many cases finding the source of a bottleneck is as simple as clicking on a column of results to sort them. Trying to obtain that same data without the use of a profiler like AQtime would not be feasible even given unlimited time resources."

Borland's Take on AQtime

"AQtime is very powerful, fast, flexible, and versatile. Not to mention, easy to use with a well designed UI, that provides consistent results. AQtime is rock solid! If you have an application that needs to be optimized, AQtime will definitely help you get the job done better and faster. If you are working with Delphi code in particular, AQtime is hands down your best option. I highly recommend it", says Mark Edington from Borland.

Borland
Key Products

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
Webinar
6 Ways to Measure the ROI of Automated Testing
Join SmartBear's testing experts to discover what it means to transition from manual to
60 minutes
  • 0
  • 1
  • 2

Contact us

  • USA +1 617-684-2600
  • EUR +353 91 398300
  • AUS +61 391929960

Company

  • About
  • Careers
  • Contact Us
  • Newsroom
  • Partners
  • Responsibility

Resources

  • Academy
  • Community
  • Resource Center
  • Support

Products

  • API Hub
  • Insight Hub
  • TestComplete
  • ReadyAPI
  • Zephyr Enterprise
  • View All Products

Legal

  • Privacy
  • Security
  • Terms of Use
  • Website Terms of Use
Facebook Instagram Linkedin X YouTube

© 2025 SmartBear Software. All Rights Reserved.

LOGIN

Additional SmartBear Tools

  • AlertSite
  • QAComplete
  • BitBar
  • SwaggerHub
  • CucumberStudio
  • VisualTest
  • LoadNinja
Additional Links
SmartBear Community
Case Management
License System