Blueprints do have an overhead in both memory and CPU usage. While I don't have exact numbers I can run through some of my findings.
First of all, the blueprint nodes do have to be processed where a simple example could be: Find the C++ code of this node -> Process any inputs -> Run C++ -> Process any outputs -> move to next node.
What we want from the above is specifically to run that C++ code and the rest of it is the CPU processing the blueprint code. While convinient to use blueprint for scripting I can also see the waste happening here.
What I did in Mythrealm was condense a function that called 3 nodes, into a function only calling one node. I saw this as an improvement because I am skipping 3 nodes that need to be processed. It was simple, the Blueprint nodes exist in C++ in the kismet function library so I called them directly in C++. Which leads into the second thing I noticed.
Each function was getting the same component, checking if it was valid, then calling a function of that component. More room for improvement by removing the branching statements that I knew if was true for one call was true for the rest of the calls.
It makes the pure blueprint version of the function that much worse, it was running similar C++ code in each node that may not have gotten cached by the CPU (something where my lack of knowledge shows itself).
While the specific example was only 3 nodes and just some basic math it does show me that Blueprint scripting can add up and waste precious CPU cycles. This is already something I experienced while porting Tribes of Midgard to the Nintendo Switch; something that I didn't realize at the time but knowing now I could do a much better job on the game than I was able to.
And this is only for processing blueprint scripting, it doesn't include that a debug version of an in editor uproperty is 200 bytes; 1 int uproperty takes of 200 more bytes than a int in pure C++. But more research is required there.
What I do know is that I am going to use C++ whenever I can while working in Unreal Engine.
*Link to the video as well*
BP over head - 3 functions that need to be looked up which can cause waste.
Turning it into 1 function helps reduce the BP node handling in engine
Calling the 3 functions in C++ showed that they each do the same first steps of validating that the components exist and are not null which has more waste
It was a small specific example that might not do a lot. But each of these adds up over a full project.
Could also mention 200 bytes for each property?