Jon*_*eet 41
IPAddress.HostToNetworkOrder
和IPAddress.NetworkToHostOrder
?
每种方法都有16,32和64位整数的重载.
System.Memory nuget 包包含静态类,其中包含用于处理“字节顺序”的静态方法,包括. 在dotnet core上,是使用这些方法实现的。在小端架构(我认为这是所有支持 .NET 的架构)上,方法在 dotnetcore 上具有相同的性能。System.Buffers.Binary.BinaryPrimitives
ReverseEndianness
HostToNetWorkOrder
ReverseEndianness
HostToNetworkOrder
ReverseEndianness
然而,在 dotnet 框架 (net461) 上,调用的性能HostToNetworkOrder
比调用 稍慢(不是 2 倍)ReverseEndianness
。
我相信 JIT 编译器实际上是对这些方法进行特殊封装以调用 BSWAP x86 指令。如果您在自己的代码库中精确复制该方法的实现ReverseEndianness(long)
,那么它会比调用该System.Memory
实现慢近 4 倍;这表明 JIT 魔法正在发生。