I think I've answered my own question. Arduino code is compiled by
AVR-GCC which is in turn part of the
GCC compiler collection which is reported to do a whole series of optimisations.
The reason for asking is I'm doing some work with stepper motors and clock face and it makes more sense to have constructs like
Hours * (StepsPerRev / 12) than to have a whole series of different constants such as
StepsPerHour, StepsPerMinute etc . So this means I can just have one value to change if I swapped out my motors with different ones. Obviously we don't want the microcontroller doing unncessary calcuations but if it's covered by the compiler then we can have the best of both worlds with clear/maintainable code and good performance/memory usage on the arduino.