This commit is contained in:
Loretta 2026-01-04 09:40:32 +01:00
parent 9ad84ec21e
commit 4b9e1490ef
4 changed files with 8 additions and 7 deletions

View File

@ -681,8 +681,8 @@ public static class AcSerializerCommon
/// </summary> /// </summary>
public sealed class SerializationReferenceTracker public sealed class SerializationReferenceTracker
{ {
private const int InitialReferenceCapacity = 16; private const int InitialReferenceCapacity = 64;
private const int InitialMultiRefCapacity = 8; private const int InitialMultiRefCapacity = 32;
private Dictionary<object, int>? _scanOccurrences; private Dictionary<object, int>? _scanOccurrences;
private Dictionary<object, int>? _writtenRefs; private Dictionary<object, int>? _writtenRefs;
@ -982,7 +982,7 @@ public static class AcSerializerCommon
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
public void RegisterObject(int id, object obj) public void RegisterObject(int id, object obj)
{ {
_idToObject ??= new Dictionary<int, object>(8); _idToObject ??= new Dictionary<int, object>(64);
_idToObject[id] = obj; _idToObject[id] = obj;
} }

View File

@ -228,10 +228,9 @@ public static partial class AcBinarySerializer
var metadata = GetTypeMetadata(type); var metadata = GetTypeMetadata(type);
var properties = metadata.Properties; var properties = metadata.Properties;
// Use Span-based iteration to avoid struct copying
for (var i = 0; i < properties.Length; i++) for (var i = 0; i < properties.Length; i++)
{ {
ref readonly var prop = ref properties[i]; var prop = properties[i];
if (!context.ShouldSerializeProperty(value, prop)) if (!context.ShouldSerializeProperty(value, prop))
{ {

View File

@ -112,8 +112,10 @@ public static partial class AcJsonDeserializer
/// </summary> /// </summary>
private static void CopyPropertiesJson(object source, object target, JsonDeserializeTypeMetadata metadata) private static void CopyPropertiesJson(object source, object target, JsonDeserializeTypeMetadata metadata)
{ {
foreach (var prop in metadata.PropertiesArray) var props = metadata.PropertiesArray;
for (var i = 0; i < props.Length; i++)
{ {
var prop = props[i];
var value = prop.GetValue(source); var value = prop.GetValue(source);
if (value != null) if (value != null)
prop.SetValue(target, value); prop.SetValue(target, value);

View File

@ -98,7 +98,7 @@ public sealed class DeserializationReferenceTracker
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
public void RegisterObject(string id, object obj) public void RegisterObject(string id, object obj)
{ {
_idToObject ??= new Dictionary<string, object>(8, StringComparer.Ordinal); _idToObject ??= new Dictionary<string, object>(64, StringComparer.Ordinal);
_idToObject[id] = obj; _idToObject[id] = obj;
} }