首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么c# utf8-json需要将obj序列化到utf8 byte[],然后再将utf8.getstring序列化?这样做有什么好处?

为什么c# utf8-json需要将obj序列化到utf8 byte[],然后再将utf8.getstring序列化?这样做有什么好处?
EN

Stack Overflow用户
提问于 2018-12-27 02:49:30
回答 2查看 1.7K关注 0票数 0

为什么c# utf8-json需要将obj序列化到utf8 byte[],然后再将utf8.getstring序列化?这样做有什么好处?

Utf8-json是C #中最高速度的JSON序列化工具之一。序列化json时,对象通常被解析为字符串或char,然后填充到StringBuilder中,后者维护char [],最后调用ToString ()方法将char []转换为字符串。utf8-json维护一个字节[],它首先以UTF8格式将对象解析为字节[],然后调用utf8。这个字节上的GetString ()方法[]。我不知道这和其他方法有什么区别。这是性能上的差异吗?但是通过我的验证,char [] -> ToString()变成字符串的速度比字节[] -> UTF8.GetString()要快。为什么utf8-json要这么做?

obj -> char[] ->字符串

obj -> byte[] ->字符串

我想我说错了。我的意思是为什么相同的序列化逻辑,UTF-8使用字节[]存储,字符串构建器使用char []存储,而UTF-8更快。

在……上面。net fx,我将JSON拼接到StringBuilder中,以比较与utf-8的性能。结果是UTF-8的速度是原来的两倍。通过阅读源代码,我发现我们的序列化逻辑是相同的,但是为什么UTF-8可以比我快一倍呢?您知道,UTF-8还有一层字节[]来消耗字符串,而字符串生成器的ToString ()比UTF8更快。GetString ()。

EN

回答 2

Stack Overflow用户

发布于 2018-12-27 02:54:49

在.NET中,charstring是UTF-16编码的,而不是UTF-8编码的.在这种编码中,每个char或代码单元只有两个字节;在UTF-8中,每个字符可能有一个或更多字节。通常,web已经在UTF-8上实现了编码的标准化,因此将byte[]原始写入流比先将UTF-16值转换为UTF-8,然后再将其转储到流中要容易。

票数 1
EN

Stack Overflow用户

发布于 2018-12-27 03:42:10

你是说中性/Utf8Json?

将对象序列化为json字符串后,通常会发送它,然后首先需要将该字符串转换为byte[]。

因此,如果序列化程序可以直接输出byte[]数据,则这是有利的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53939234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档