在网络编程中,需要对数据进行序列化发送,那么如何能更快的序列化呢,IP部分
测试
C#
[MemoryDiagnoser]
public partial class Test
{
[GlobalSetup]
public void Startup()
{
}
byte[] arr = new byte[8];
[Benchmark]
public void CopyTo()
{
for (int i = 0; i < 100; i++)
IPAddress.Any.GetAddressBytes().CopyTo(arr, 0);
}
[Benchmark]
public void TryWriteBytes()
{
for (int i = 0; i < 100; i++)
IPAddress.Any.TryWriteBytes(arr,out int len);
}
}
基准
C#
BenchmarkDotNet=v0.13.5, OS=Windows 10 (10.0.19045.3208/22H2/2022Update)
AMD Ryzen 3 2200G with Radeon Vega Graphics, 1 CPU, 4 logical and 4 physical cores
.NET SDK=7.0.100
[Host] : .NET 7.0.0 (7.0.22.51805), X64 RyuJIT AVX2 [AttachedDebugger]
DefaultJob : .NET 7.0.0 (7.0.22.51805), X64 RyuJIT AVX2
| Method | Mean | Error | StdDev | Gen0 | Allocated |
|-------------- |-----------:|---------:|---------:|-------:|----------:|
| CopyTo | 1,388.5 ns | 27.54 ns | 25.76 ns | 1.5297 | 3200 B |
| TryWriteBytes | 319.3 ns | 5.84 ns | 7.38 ns | - | - |