I'm working with the LLVM API and was curious about the performance of the in built JIT through it's execution engine compared to statically compiled object code, and whether the execution engine was more for ease of use during development or not. Having seen this question apparently the JIT LLVM offers can provide very significant speedups, for particular kinds of code.
My main question is, what specific features in given code allows for such gains through JIT compilation, where concrete types are known to the optimiser, compared to static compilation? When does it make a difference, and when is it more or less the same?
As a side question, I'm also curious if the above question is still accurate. The nature of JIT vs AOT compilation is obviously unchanging, but a lot still could had changed in the 10 years since the question was asked, and I just wonder if there's any new information on the topic that might be relevant for working with LLVM.
" would be accurate and AFAICT, the list isn't such as to provide "very significant" speedups. As to what kinds... if you have something small, just a few lines, wouldn't i be nice to not have to make an executable? Just one function?
– arnt Feb 08 '21 at 08:09