Really? Do you turn off optimizations when you build the final binaries of your program? For moderate sized programs it can make quite a difference in size or speed. Optimizing yourself would require knowing which machine instructions to use, allocate registers yourself, reorder instructions to get the most out of your clock cycles, etc. Even if you have the know-how, do you really want to do such optimization work by hand for the entire program?