Probably the optimal system is an hybrid iterative JIT/AOT compiler (which incidentally was the original objective of LLVM).