Programming by Optimisation (PbO)

[What is PbO?] · [PbO Levels] · [Literature] · [Examples] · [Tools] · [Best Practices] · [FAQ]


Levels of PbO

Level 0.
Settings of the parameters exposed by an existing piece of software are optimized for a given use context (characterized by, say, a set of typical input data), also known as parameter tuning or algorithm configuration.

Level 1.
The design space represented by an existing piece of software is extended by exposing design choices hardwired into code. Such choices include certain magic constants, or literals that, when modified, could affect performance but not the programís correct function, as well as hidden parameters and named constants that could take different values without compromising the programís correctness. Further examples of hardwired choices are variables set to constant values but not exposed as externally accessible parameters and abandoned design alternatives, or pieces of code that could be used in addition to or instead of active code without compromising correctness but that are no longer reachable during execution of the current version of the program.

Level 2.
Design choices considered during the normal course of the software- development process are actively kept and exposed to the user.

Level 3.
The software-development process is structured and carried out in a way that seeks to provide design choices and alternatives in many performance- relevant components of a project.

Level 4.
The software-development process is centered on the idea of providing design choices and alternatives in all parts of a project that might benefit from them; design choices that cannot be justified convincingly are not made prematurely.