-
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathBinaryBenchmark.BSON.cs
30 lines (26 loc) · 1.01 KB
/
BinaryBenchmark.BSON.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using BenchmarkDotNet.Attributes;
using MongoDB.Bson.IO;
using MongoDB.Bson.Serialization;
using SerializationBenchmarks.Models;
public partial class BinaryBenchmark
{
[Benchmark, BenchmarkCategory("Serialization", "Binary"), ArgumentsSource(nameof(GenerateDataSets))]
public byte[] BSON_Serialize(DataSet data)
{
return DataConvert_BSON(data.Payload);
}
[Benchmark, BenchmarkCategory("Deserialization", "Binary"), ArgumentsSource(nameof(GenerateDataSets))]
public List<User> BSON_Deserialize(DataSet data)
{
return BsonSerializer.Deserialize<UserWrapper>(data.SerializedData.BSON).Users;
}
// We need this because we cannot write an array to the root of a bson document
public record UserWrapper(List<User> Users);
private byte[] DataConvert_BSON(List<User> users)
{
using var ms = new MemoryStream();
var writer = new BsonBinaryWriter(ms);
BsonSerializer.Serialize(writer, new UserWrapper(users));
return ms.ToArray();
}
}