Currently, we switch from interpreting a method to executing compiled code only when entering a method. If method has long-running loops it may take significant time to interpret it.
In order to improve performance in such cases, we need to implement
unoptimized compilation with OSR entry point
OSR of interpreted frames with unoptimized compiled frames
This is one of the reasons why NavierStokes and NavierStokesTyped benchmarks are slower with interpreter compared to bytecode JIT (which is on par with default mode). These benchmarks don't have a proper warm-up outside of measurements and they have a method with long-running loops (FluidField.lin_solve).
Currently, we switch from interpreting a method to executing compiled code only when entering a method. If method has long-running loops it may take significant time to interpret it.
In order to improve performance in such cases, we need to implement
This is one of the reasons why
NavierStokes
andNavierStokesTyped
benchmarks are slower with interpreter compared to bytecode JIT (which is on par with default mode). These benchmarks don't have a proper warm-up outside of measurements and they have a method with long-running loops (FluidField.lin_solve
)./cc @rmacnak-google @crelier @a-siva