Why Blueprint performance is so much higher than my C++ Script

Yeah, thats odd. You could add some quick logging in to see where it’s taking time:

FDateTime startTime = FDateTime::UtcNow();
... do your task
FTimespan difference = FDateTime::UtcNow() - startTime;
UE_LOG(LogTemp, Log, TEXT("Step 1 took %f seconds."),  difference.GetTotalSeconds());

you may need
#include "TimerManager.h"