Dynamic compilation is a method used by some programming language implementations to increase performance during program execution. The best-known language that makes use of this technique is Java. The dynamic compiling is originated in self. It permits optimizations to be made that can only be well-known at runtime. The Runtime environments by dynamic compilation characteristically have programs run slowly for the first few minutes, and then after that, nearly all of the compilation and recompilation is done and it runs fast. Because of this initial performance lag, dynamic compilation is undesirable in some cases. In most implementations of the dynamic compilation, few optimizations that could be done at the initial compile time are delayed until further compilation at runtime, causing additional unnecessary slowdowns. Just-in-time compilation is a type of dynamic compilation in java.