Computational overhead is parts of a program's run time not directlyattributable to the job the program is intended to do. In the contextof high-level dynamic languages, the term overhead is often used todescribe performance in relation to C.
In this thesis I use The Genomic HyperBrowser, a large and complexPython program, as the case in a study of controlling computationaloverhead.
Controlling computational overhead can have at least three differentmeanings, all of which are considered in this thesis.
First, it can mean to assess the amount of overhead in a givenprogram, i.e. estimate how much faster the program could run accordingto some notion of optimal execution. Several ways of defining overheadis covered in this thesis, together with ways to estimate overheadbased on these definitions. Furthermore, I propose ways to manuallyinspect the run time distribution in programs to determine what partsof your code are slow.
Second, it can mean to limit excess overhead in a program by usingspecialized tools and techniques to find parts of the code that areparticularly good candidates for code optimization to reduce overallrunning time. Here, I show step by step a real case of finding,analyzing and resolving a performance issue caused by excessiveoverhead.
A third meaning can be to design a program in such a way as toinformally bound the overhead in the final program, i.e. to applysimple design principles that can help avoid the overhead ending up atan inappropriate level. In this thesis I show how central designdecisions in the HyperBrowser ended up affecting computationaloverhead.