Performance Consulting

Background

Software Performance may be defined as a measure of how much useful work can be done while using a given set of hardware resources. High performing software delivers more useful work on hardware with a given cost than does poorly performing software. Poorly performing software may incur significant business costs, both apparent and hidden. This is particularly true for online services. With improved software performance:

In the field of software performance there are two common approaches. The first is “tuning”, typified by the addition of database indices, modification of operating system configuration parameters, addition of an extra storage spindle. Tuning is a relative low skilled activity often using vendor-supplied wizard tools, and directed towards specific system components in isolation. Tuning typically yields a moderate improvement in performance for a moderate cost and low risk.

The second approach is that of re-implementation—the green field project. Re-implementation is often an attractive choice for engineers because new technologies, languages and tools may be employed. However, the end result is not always complete success because it can be very hard to reproduce the exact behavior of the original system. Also the touted benefits of new technologies are frequently not realized. Re-implementation may yield a high performance improvement but at a very high cost and at high risk.

Experience shows that often the optimal approach in performance improvement is in the middle ground between tuning and re-implementation. An accurate analysis of the entire system’s activities while carrying out the common, critical functions will show where resources are being used. This analysis, together with good insight into all the components that make up the complete system, can lead to a small number of specific code or design changes that will deliver substantial performance improvements. We favor this approach: using analysis to discover facts about the system, coupled with an understanding of all the system's technologies together to deliver low-risk, targeted changes to the code. All proposed code changes are bench-tested to prove and quantify their performance benefit before delivery. This closed-loop process ensures no unnecessary risk is taken with changes that do not deliver significant benefit.

What We Do

Performance Analysis
Reproduce of all or part of the client’s system, complete with a test load generator. Use this reproduction system with profilers or code instrumentation to determine system activity performing key functions. Use that information identify the software's resource intensive code. Optionally monitor, analyse and report on live deployed software performance.

Performance Enhancement
Devise, select, implement and test code changes designed to improve performance, based on the facts discovered in the Performance Analysis. Deliver integrated code changes with their measured performance benefit.

Performance Instrumentation
Add code to a system such that its performance behavior may be monitored real-time in live deployments.

Benchmark Development
Devise a test load and if necessary, test load synthesis tools, for a specific system or class of systems.

Benchmarking
The execution of a test load against a system under controlled conditions. Results may be optionally used for client’s marketing purposes.

Develop for Performance—Consulting and Training
Deliver procedures, processes and associated training with the goal to enhance a development organization’s ability to deliver and sustain performant software.

Who We Are

David Boreham leads this work. David is an experienced architect with 15 years hard coding behind him. He has worked on variety of software systems including network applications, computer telephony, device drivers, internet servers, database engines, parallel processing, B2B commerce infrastructure software and B2C web sites. David loves to work on complex, highly scalable software and has a tireless yearning to make systems more efficient.

David was Principal Engineer and Team Lead at eTime Capital, Inc. Prior to eTime Capital, Inc., he was Principal Engineer and Directory Server Development Team Lead for Netscape. He designed and coded substantial parts of the LDAP Server, versions 3-5, and held special responsibility for product performance. Going further back in time, David worked on the “Unified Messenger” voice-messaging product for Octel/Lucent as a senior engineer and architect. David has also held senior engineering and management positions with Network Designers and STMicroelectronics.

David holds a BSc in Electrical and Electronic Engineering with 1st class honors from Heriot-Watt University in Edinburgh, Scotland.

Technologies, Platforms and Delivery

All languages, operating systems and platforms in common use today are supported, including: Java, C, C++, ASP, JSP, Perl, Tcl, Python, NT, Solaris, Linux; Sun, Microsoft and BEA environments.

Services may be performed on-site, off-site or a mixture of both, using hardware which is customer-located or which is in our lab. Certain hardware configurations require prior agreement.

Read our list of recent customers

Send e-mail to request further information.

©2006 Bozeman Pass Incorporated