I don't know why no one ever replied here, but I think it's an interesting subject in many situations, and therefore I'll try to answer it.
And my answer to the question is: MEASURE it.
// measure method #1
T := GetTickCount64;
for i := 1 to 1000000 do
record1 := record2;
T1 := GetTickCount64 - T;
// measure method #2
T := GetTickCount64;
for i := 1 to 1000000 do
Move(record1, record2, SizeOf(TRecord));
T2 := GetTickCount64 - T;
// and so on... run different methods and compare the time it takes
I have done similar things in the past and I often found surprising results, e.g. sometimes assigning 0 to each field manually was faster than using FillChar, things like that.
Bottom line, don't rely on guesses or reasoning when you can easily measure.