binaryformatter java_Xfrogcn.BinaryFormatter 1.0.0 发布

Xfrogcn.BinaryFormatter 1.0.0 已经发布。

Xfrogcn.BinaryFormatter是一个.NET下的高性能二进制序列化库,它通过底层的Span以及Emit最大限度地提高性能,BinarySerializer整体上采用了与System.Text.Json序列化一致的编程API接口,故简单易用,无需过多的学习成本。

特性

高性能

较少的序列化尺寸

简单易用

引用保持

支持动态加载程序集中的类型

较为全面的内置类型支持

扩展属性

二进制文档模式

性能对比

与.NET内置的System.Runtime.Serialization.Formatters.Binary.BinaryFormatter二进制序列化对比,性能最高可达到它的4倍以上,而序列化结果的大小仅只有它的75%。 以下为通过test/BinaryFormatter.Benchmark性能测试项目获取的性能数据,其中:

Json指System.Text.Json,可以看到其性能的确强悍

XfrogcnBinary指本库

SystemBinaryFormatter指.NET内置二进制序列化库(System.Runtime.Serialization.Formatters.Binary.BinaryFormatter)

类别Stream为采用流化方式序列化

类别Bytes为直接序列化为Byte数组或从Byte数组反序列化

所有的测试都基于默认配置,(流化方式下默认的缓冲区大小将会明显影响序列化性能)

序列化

db308b919e1fd5765093e8ea3fc0e57d.png

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1237 (1909/November2018Update/19H2)

Intel Core i7-7500U CPU 2.70GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores

.NET Core SDK=5.0.101

[Host] : .NET Core 3.1.10 (CoreCLR 4.700.20.51601, CoreFX 4.700.20.51901), X64 RyuJIT

DefaultJob : .NET Core 3.1.10 (CoreCLR 4.700.20.51601, CoreFX 4.700.20.51901), X64 RyuJIT

Method

Categories

Mean

Error

StdDev

Json

Stream

61.41 μs

1.212 μs

2.154 μs

XfrogcnBinary

Stream

92.97 μs

1.691 μs

2.425 μs

SystemBinaryFormatter

Stream

291.37 μs

5.729 μs

11.174 μs

Json_Bytes

Bytes

59.79 μs

1.160 μs

1.907 μs

XfrogcnBinary_Bytes

Bytes

88.67 μs

1.437 μs

1.274 μs

反序列化

0ba390e87ca94f1bac71c32bb7ad154b.png

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1237 (1909/November2018Update/19H2)

Intel Core i7-7500U CPU 2.70GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores

.NET Core SDK=5.0.101

[Host] : .NET Core 3.1.10 (CoreCLR 4.700.20.51601, CoreFX 4.700.20.51901), X64 RyuJIT

DefaultJob : .NET Core 3.1.10 (CoreCLR 4.700.20.51601, CoreFX 4.700.20.51901), X64 RyuJIT

Method

Mean

Error

StdDev

Json

100.12 μs

1.933 μs

2.374 μs

XfrogcnBinary

96.34 μs

1.631 μs

1.362 μs

SystemBinaryFormatter

334.68 μs

2.319 μs

1.936 μs

Json_Bytes

80.13 μs

1.572 μs

1.989 μs

XfrogcnBinary_Bytes

92.14 μs

1.814 μs

3.623 μs

解决动态加载程序集中类型序列化的问题

如果序列化类型在动态加载的程序集中,而序列化方法封装在非动态加载程序集李,.NET官方提供的BinaryFormatter序列化库将无法进行反序列化,将引发无法找到程序集的错误。 本序列化库已解决此问题

详情查看:https://gitee.com/WuYeCai/Xfrogcn.BinaryFormatter/releases/1.0.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值