Welcome aboard! About four months late... and I think that was all said in the previous posts ;D But you're correct! Maybe sometimes true but not in the case of SDCC. When you inline the function, the switch statement compiles entirely differently, and it kills the efficiency. It's better to call the function from the switch statement - and I mean call a function, not using a function pointer. Just to add something interesting to my post... The jumptable generated by a simplified switch/case statement is generally faster than a series of 'if's , but there is some code that is always present for the jumptable, so if you only have a few options, or if you won't be using 'break' at the end of each case, sometimes the 'if' is actually faster. Sometimes.....