Your profiler said dispatch. It did not say virtual.
A profile blamed dispatch(), and all four proposed fixes made the virtual call inside it cheaper. Measured, that call is 10 ns of a 333 ns budget and finding the handler is 75. Then the instruction cache, a plugin ABI in …
Abi