Explain to me what JIT compilation is and when it is appropriate to use. How does it compare to regular compilation?