See this (first answer)
Blueprint VM tends to do lots of copying around arguments regardless of whether you specify them as ref or not. You can take a look at ProcessEvent and the UHT generated code (files in .generated.h and .gen.cpp) to understand the way it works. Accessing the property directly is faster.