Salar.Bois一款紧凑、快速且功能强大的二进制序列化器
程序员文章站
2022-06-16 17:00:35
...
Salar.Bois 是 .NET 代码和 .NET 框架中最紧凑、最快速的二进制序列化器。
- 无需压缩,高紧凑比是 Bois 格式的结果。
- 无配置。
- 没有更改您的类。
- 压缩作为单独的包提供。
Why Salar.Bois?
- 因为有效负载大小很重要。Bois 序列化器生成最小的有效负载大小。
- 因为速度很重要。序列化和反序列化都非常快速。
- 易于使用,是所有你需要的。
Serialize<T>
Deserialize<T>
- 无需配置。无需 sperate 架构。
NuGet 包
PM> Install-Package Salar.Bois
PM> Install-Package Salar.Bois.LZ4
开始:
它易于使用,只需将包添加到您的项目和 voila,您现在可以使用它。
您只需调用方法。Serialize
BoisSerializer.Initialize<Person>();
var boisSerializer = new BoisSerializer();
using (var mem = new MemoryStream())
{
boisSerializer.Serialize(personInstance, mem);
return mem.ToArray();
}
注意:根本不需要调用,但如果应用程序的性能对您很重要,最好在应用程序开始时调用。BoisSerializer.Initialize
下面是完整的示例:
public class Project
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string ProjectUrl { get; set; }
public Version Version { get; set; }
}
class Program
{
static void Main()
{
// Initialize is optional, but recommended for better performance
BoisSerializer.Initialize<Project>();
var projectInstance = new Project()
{
ID = 1,
Name = "Salar.Bois",
ProjectUrl = "https://github.com/salarcode/Bois",
Version = new Version(3, 0, 0, 0),
Description = "Salar.Bois is a compact, fast and powerful binary serializer for .NET Framework."
};
var boisSerializer = new BoisSerializer();
using (var file = new FileStream("output.data", FileMode.Create))
{
boisSerializer.Serialize(projectInstance, file);
}
// All done.
// ...
// if you want to have more compression using LZ4 wrapper
var boisLz4Serializer = new BoisLz4Serializer();
using (var file = new FileStream("output-compressed.data", FileMode.Create))
{
boisLz4Serializer.Pickle(projectInstance, file);
}
}
}
如何反序列化对象:
var boisSerializer = new BoisSerializer();
return boisSerializer.Deserialize<Project>(dataStream);
// and the compressed data
var boisLz4Serializer = new BoisLz4Serializer();
return boisLz4Serializer.Unpickle<Project>(dataStream);
定义对象
没有什么特别的东西是真正需要的。只是这些简单的小规则。
- 具有无参数的公共构造函数。
- 集合/列表应为通用集合,并实现 ICollection<>、IList<>或 I字典<>
压缩
类位于名为 的单独包中。它提供给任何寻求更紧凑的序列化的人。要使用它,只需创建一个新的实例 ,并序列化和压缩对象调用,并取消序列化和解压缩调用。请注意,目前-是作为围绕LZ4的包装实现的。BoisLz4Serializer
Salar.Bois.LZ4
BoisLz4Serializer
Pickle
Unpickle
BoisLz4Serializer
Why Salar.Bois?
如果你有兴趣知道Salar.Bois是如何获得这个惊人的紧凑格式,看看它的Bois格式维基页面。
基准
基准源代码可用。每个运行时间都计算为 5000 次迭代 (v3.0)。
请注意,在这些测试中,Bois 不需要任何配置,而 Avro、Zero、MsPack 和 ProtoZBuff 需要任何配置。此外,零要求属性是虚拟的。
-针对:具有小数据的数组类型
上一篇: 武汉宵夜常见的有哪些呢
下一篇: 苹果芒怎么挑选?要注意哪些问题?