Function() vs Speed

Plus I think the compiler has some "scratch" registers which it assumes are available for every function. But for an ISR, which might interrupt half-way through a function, it can't assume that, so it has to save them too.