I'd be willing to bet that the compiled SHIFTOUT command looks very similar to the shift.bas program, from a functional standpoint anyways (probably won't have the same labels, jumps, etc., but the flow would be almost identical).
As far as overhead goes, yes, there's overhead. 'cause when you're doing the shiftout, that's all your doing, is shifting out. You can't do anything else (unless you've got interrupts going for you).
Bookmarks