Frequently used functions, performance improvements using static variables?
In short: it depends. On more things that you want to know.

Some architectures have instructions and/or addressing modes that access stack-relative data. Nearly all architectures have instructions and/or addressing modes that access data at an absolute address. Which is faster depends on the particular architecture.

Note that some architectures allow only a very small offset or (zero-page) address in an instruction, so on such an architecture a lot depends on whether the offset fits. When you have a lot of static (= global lifetime) variables, you are more likely to exceed a small zero-page address (because they share the same absolute address space) than with a lot of automatic (local lifetime, stack-offset addressed) variables (which each have their own small SP offset).

But on modern PC-class architectures the memory access (including cache issues) are often much more important that instruction execution, especially when the code is a tight loop and the data is all over the place. In such a case execution speed might vary by 10's of % depending on exactly how data is aligned with respect to various cache issues (lines, pages, buffers, etc.), which is affected by almost everything but the phase of the moon, including other applications that are or even have been loaded. This makes benchmarking in such a situation very dubious.