Software Performance Troubleshooting

With processors getting faster and memory cheaper, it sometimes comes as a surprise to developers when performance objectives cannot be met.

As a neutral third party we can review an existing design or implementation to analyze the reasons behind performance problems and advise on the actions that may be taken to improve it.

Projects we have worked on in the past include:

  • Where are my reports? A program was running too slowly. So slowly that users were terminating the program rather than waiting for it to reach a conclusion. Analysis of the program revealed that the programmer had coded a textbook algorithm which, although it would perform reasonably in the average case, had abysmal worst case behavior. Unfortunately the worst case could be expected to occur very frequently indeed. We adapted a library routine to replace the naive coding. The final result was substantially faster, smaller, and more maintainable than the original code.
  • Just too slow. Simply upgrading hardware to solve performance problems just does not work in the shrink-wrapped software market. A product used MFC library functions to store its data, exhibiting disastrous performance when the amount of virtual memory used exceeded the physical memory in the machine. We redesigned the data structures to (a) fit expected usage, and (b) degrade gracefully when physical memory was exhausted. The resulting code ran 10 times faster when sufficient physical memory was available, and over 6000 times faster when physical memory was exhausted.
  • From batch to interactive. An AI-based product took over twenty minutes to process a small dataset. A careful examination of the algorithm and a review of "prior art" identified possibilities for tremendous improvements both in accuracy and performance. A subsequent implementation, using the algorithms we had identified, proved capable of producing superior results in two seconds. This turned the product from a batch tool into an interactive one, leading to significant changes in the way it could be used and marketed.
  • Too unreliable. The parsing component of a software product was giving persistent problems. Analysis revealed that the parser had been written by someone unfamiliar with parsing techniques: the result was software which was both highly unreliable and highly inefficient. We advised (and undertook) a complete rewrite of the component in question. The result was substantial improvements in both robustness and efficiency.

[Back to Services]


Albion Research Ltd. is based in Ottawa, Canada. Please contact us for more information about our services.

© Albion Research Ltd. 2008