 In contrast, AOT usually cannot perform some optimizations possible in JIT, like runtime profile-guided optimization (PGO), pseudo-constant propagation, or indirect-virtual function inlining.AOT must compile to a target architecture, while a JIT can compile the code to make the best use of the actual CPU it is running on, even years after the software has been released.Further, JIT compilers can speculatively optimize hot code by making assumptions on the code.