The program is generally JIT-compiled on per-method basis. The method is compiled when it is needed for a call. Once a IL method is compiled, it's native code remains in memory for the rest of runtime. This way, a method which is never called may be never compiled. See also:
https://en.wikipedia.org/wiki/Just-in-time_compilation[
^].
By the way, it's important to take into account if you try to measure performance by timing some fragment of call. In such measurements, it's important to exclude JIT phase. It's easy to do if you make sure that each of the method which can be called during timing is called at least once before timing.
—SA