Profiling and Detecting Bottlenecks in Software

Location: Portland 255
Average rating: ***..
(3.71, 7 ratings)

Almost all applications at one time or another will need to be optimized for performance. Software developers make mistakes and sometimes don’t fully understand the impact of choosing one algorithm/data structure over another, or making too many database calls. Determining where bottlenecks are in an application helps developers focus their attention on areas of code where they can make changes that will affect performance.

With examples I will show how to determine what system resources are being used and how to narrow down where the bottlenecks are in an application using various tools (OProfile, Google Profiler, Valgrind’s Callgrind, and strace). I will discuss the difference between statistical and instrumenting profilers and their effects on application performance, especially when profiling an application in a production environment.

I have seen performance increases of two to three times in software applications by removing bottlenecks in the code. This has had a significant impact on initial hardware and long term hardware maintenance costs.

Photo of Bryan Call

Bryan Call


Bryan Call has been writing code and working with on large scale solutions for 14 years. He has experience optimizing and profiling projects, including Apache Traffic Server and many internal projects at Yahoo!.

He came to Yahoo! through an acquisition of a startup and has been working there for the last 12 years. He has worked on various products and teams, such as WebRing, GeoCities, People Search, Yahoo! Personal, Tiger Team (internal consulting team), Architect in the Platform Group, Architect in the Edge Platform, and now is working in the R&D Systems Group.

Bryan is also a commiter on the Apache Traffic Server project and instrumental in bring Traffic Server to the Apache Foundation.