compiler which attempts to analyse the code it produces and to produce more efficient code by performing program transformation such as branch elimination, partial evaluation, or peep-hole optimisation. Contrast pessimising compiler.