public int HagarHandCrafted() { Session.FullReset(); var reader = Reader.Create(HagarInput, Session); var instance = IntClass.Create(); _ = reader.ReadFieldHeader(); Generated.DeserializeNew(ref reader, instance); //var instance = HagarSerializer.Deserialize(ref reader); return(SumResult(instance)); }
static DeserializeBenchmark() { ProtoInput = new MemoryStream(); ProtoBuf.Serializer.Serialize(ProtoInput, IntClass.Create()); HyperionInput = new MemoryStream(); HyperionSerializer.Serialize(IntClass.Create(), HyperionInput); // Hagar var services = new ServiceCollection() .AddHagar(hagar => hagar.AddAssembly(typeof(Program).Assembly)) .BuildServiceProvider(); HagarSerializer = services.GetRequiredService <Serializer <IntClass> >(); var bytes = new byte[1000]; Session = services.GetRequiredService <SessionPool>().GetSession(); var writer = new SingleSegmentBuffer(bytes).CreateWriter(Session); HagarSerializer.Serialize(ref writer, IntClass.Create()); HagarInput = bytes; // Orleans OrleansSerializer = new ClientBuilder() .ConfigureDefaults() .UseLocalhostClustering() .ConfigureServices(s => s.ToList().ForEach(r => { if (r.ServiceType == typeof(IConfigurationValidator)) { s.Remove(r); } })) .Configure <ClusterOptions>(o => o.ClusterId = o.ServiceId = "test") .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(SimpleClass).Assembly).WithCodeGeneration()) .Configure <SerializationProviderOptions>(options => options.FallbackSerializationProvider = typeof(SupportsNothingSerializer).GetTypeInfo()) .Build().ServiceProvider.GetRequiredService <SerializationManager>(); var writer2 = new BinaryTokenStreamWriter(); OrleansSerializer.Serialize(IntClass.Create(), writer2); OrleansInput = writer2.ToBytes(); OrleansBuffer = new BinaryTokenStreamReader(OrleansInput); }
static ClassDeserializeBenchmark() { ProtoInput = new MemoryStream(); ProtoBuf.Serializer.Serialize(ProtoInput, IntClass.Create()); HyperionInput = new MemoryStream(); HyperionSession = HyperionSerializer.GetDeserializerSession(); HyperionSerializer.Serialize(IntClass.Create(), HyperionInput); // Hagar var services = new ServiceCollection() .AddHagar(hagar => hagar.AddAssembly(typeof(Program).Assembly)) .BuildServiceProvider(); HagarSerializer = services.GetRequiredService <Serializer <IntClass> >(); var bytes = new byte[1000]; Session = services.GetRequiredService <SerializerSessionPool>().GetSession(); var writer = new SingleSegmentBuffer(bytes).CreateWriter(Session); //HagarSerializer.Serialize(ref writer, IntClass.Create()); writer.WriteStartObject(0, typeof(IntClass), typeof(IntClass)); Generated.Serialize(ref writer, IntClass.Create()); writer.WriteEndObject(); HagarInput = bytes; Utf8JsonInput = Utf8JsonNS.JsonSerializer.Serialize(IntClass.Create(), Utf8JsonResolver); var stream = new MemoryStream(); using (var jsonWriter = new System.Text.Json.Utf8JsonWriter(stream)) { System.Text.Json.JsonSerializer.Serialize <IntClass>(jsonWriter, IntClass.Create()); } SystemTextJsonInput = stream.ToArray(); }