# C# IP类型序列化

在网络编程中,需要对数据进行序列化发送,那么如何能更快的序列化呢,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 |      - |         - |