"Spaghetti" code, a term I do not like, but which is used freely on some forums. To me there are only two metrics of performance, speed of execution and number of instructions. Number of registers used is usually a secondary consideration. One also needs to consider readability. A jump of the program counter takes the same time regardless of whether the jump is to the end of the program or something much closer. Yet for the reader, such illogical jumps can be an added source of difficulty in understanding the code.
Many programmers are excellent at meeting both standards. I have done programming for just 10 years, and very part time. Nevertheless in that time, I have seen a progression of chips. Many years ago and still with some chips, program memory is at a premium. Today, that is not of such importance, so I would put more emphasis on execution speed for chips with effectively unlimited program memory. I know that results in redundancies, but one has to set his priorities and live by them.
Except for revisions, there is no disadvantage to lengthy code that is fast.
John