绝对是 C#(NET、.NET Core、Unity、Xamarin)中最快、零分配的 JSON 序列化器。
此基准测试将对象转换为 UTF8 并将 UTF8 转换为对象,不涉及字符串 (NET UTF16),因此 Jil、NetJSON 和 Json.NET 中包含了额外的 UTF8.GetBytes/UTF8.GetString 调用。绝对意味着不存在编码/解码成本。基准测试代码位于 sandbox/PerfBenchmark 中,由 BenchmarkDotNet 提供。
我已经测试了更多的基准 - Jil 与 Utf8Json 的基准测试,用于测试多种数据集模式(来自 Jil Benchmark)和三种输入/输出比较(
Object <-> byte[] (Utf8),Object <-> Stream(Utf8)和Object <-> String(UTF16))。如果目标是 UTF8(既包括byte[]又包括Stream),则 Utf8Json 赢得了比赛,且所分配的内存极其小。
关键的区别是,直接读取和写入 UTF8 二进制文件意味着没有额外开销。通常的序列化需要将对象序列化为 Stream 或 byte[], 这需要额外的 UTF8.GetBytes 成本或 StreamReader/Writer 的开销(速度非常慢)。
暂无开放 Issues,或尚未同步最近议题。