Magiccube5D, a fully functional five-dimensional analogue of Rubik’s cube.
rithms on which they are based fre-
quently involve different ways of get-
ting something done. Sometimes,
certain choices are clearly preferable,
but it is often unclear a priori which of
several design decisions will ultimate-
ly give the best results. Such design
choices can, and, routinely, do, occur
at many levels, from high-level archi-
tectural aspects of a software system
to low-level implementation details.
They are often made based on consid-
erations of maintainability, extensi-
bility, and performance of the system
or program under development. This
article focuses on this latter aspect
of a system’s performance, consider-
ing only sets of semantically equiva-
lent design choices and situations in
which the performance of a program
depends on the decisions made for
each part of the program for which one
or more candidate designs are avail-
able, even though these choices do not
affect the program’s correctness and
functionality. Note this premise differs
fundamentally from that of program
synthesis, in which the primary goal is
to come up with a design that satisfies
a given functional specification.