The third stage of the contract is between the compiler and the hardware. The compiler will examine, say, a block of application source code as well as its timing and precision requirements. It then consults a table that is specific to a computer system that describes the hardware: the number of functional units and the restriction on using them simultaneously, the size of each memory regime, and any other feature that must be known to establish timing and error estimates. Alternately, a microcode simulator can be used instead of a table, but it should still be able to give a maximum wall clock time and output error estimate for the conditions of the contract.
If the compiling of the block of an application program fails to meet performance requirements, then the compiler can:
The compiler should not be burdened with 
-hard
optimization problems of resource allocation.
If someone finds
a clever solution to a common optimization problem, then that
should be placed in the standard library of routines.
That
standard library can contain, say, all the best known methods for
performing the
operation
for the whole spectrum of computer architectures.
That library function might be lengthy
and complicated, but would be attached to a simple
performance specification usable by the compiler to see if a
contractual obligation to the application programmer can be met.