In 5.5, the serialization of an actor is hundreds of times slower compared to 5.3. I have a scene with 100 actors with kinda limited saved data (200 bytes each). In 5.3 applying serialization for those actors took few miliseconds. Now the same operation takes 2 minutes!
Code for serialization:
void UMainFunctionLibrary::ApplySerialization(AActor* Actor, const TArray<uint8>& Data)
{
if (Data.Num() <= 0 || !IsValid(Actor))
return;
FMemoryReader ActorReader(Data, true);
FObjectAndNameAsStringProxyArchive Archive(ActorReader, true);
ActorReader.SetIsLoading(true);
Actor->Serialize(Archive);
}
TArray<uint8> UMainFunctionLibrary::SerializeActor(AActor* Actor)
{
TArray<uint8> OutSerializedData;
if (Actor == nullptr)
return OutSerializedData;
FMemoryWriter Writer(OutSerializedData, true);
FObjectAndNameAsStringProxyArchive Archive(Writer, true);
Writer.SetIsSaving(true);
Archive.ArIsSaveGame = true;
Actor->Serialize(Archive);
return OutSerializedData;
}
Did UE 5.5 change how it saves data, or what? Loading games from a save file can’t take several minutes, so this is a game-breaking issue.