To elaborate a bit: when you create Blueprint inheriting from C++ class, only functions that are implemented in blueprints will be executed through virtual machine.
When native C++ UFUNCTION is called, the reflection system checks whether this function is overriden in blueprints, if it’s not, it becomes a simple c++ function call.