Serialization 将unity3d C#对象序列化为字符串并返回

Serialization 将unity3d C#对象序列化为字符串并返回,serialization,unity3d,json.net,protobuf-net,Serialization,Unity3d,Json.net,Protobuf Net,鉴于我的服务器API需要一个C#字符串,建议使用这两种方法中的哪一种?哪一个将导致最小的字符串长度 1) Protobuf网 用protobuf网络转换对象字节数组 使用Convert.ToBase64String方法转换字节数组字符串 2) 直接使用Json.Net转换对象字符串 我们的项目中有Protobuf net,使用byte[]服务器API。现在,我们的服务器正在迁移到字符串API,而不是字节[]。我们不确定是应该转移到Json.Net还是继续使用protobuf Net,并使用Con

鉴于我的服务器API需要一个C#字符串,建议使用这两种方法中的哪一种?哪一个将导致最小的字符串长度

1) Protobuf网 用protobuf网络转换对象字节数组 使用Convert.ToBase64String方法转换字节数组字符串

2) 直接使用Json.Net转换对象字符串

我们的项目中有Protobuf net,使用byte[]服务器API。现在,我们的服务器正在迁移到字符串API,而不是字节[]。我们不确定是应该转移到Json.Net还是继续使用protobuf Net,并使用Convert Base 64进行额外的字符串到字节[]的转换


你有什么建议?

好的,这是我的思考过程,我希望能帮助你在两者之间做出选择:

在决定哪一个更好之前,我们需要更好地理解问题的背景。优化总是在定义良好的“适应度”参数下进行的。 我的意思是:

  • 如果您最受CPU使用的限制,我将测试哪些代码使用更多的CPU来执行
  • 如果带宽是一个问题,您应该考虑发送最小数据包的方法。(在这种情况下,二进制序列化的base64应该是答案。)
  • 如果代码可读性是一个因素,那么您可能应该看看哪些代码更容易阅读/理解,而编写的文本更少。(在这种情况下,我怀疑JSON路由将具有更好的可读性)
总的来说,我会提醒大家不要过度优化。主要是因为您可能会花费比“未优化”代码所损失的时间更多的时间来思考和比较:) 也就是说,只有当你能清楚地定义你的瓶颈时,才能进行优化


希望这有帮助:)

鉴于我的服务器API希望使用C#字符串,这两种方法中哪一种性能更好。阅读我想知道询问基准测试结果的一般优点。。。我会假设大多数情况下都包含在1中。书写时间<1小时或2小时的测试。API网站上发布的官方基准。如果是未执行的复杂基准,那么,那么你只是在赌别人为你做这件事,或者在不远的过去已经做过了。同样,出于某种原因,我觉得这对这个网站没有多大帮助。@EZI感谢你分享这个链接。我完全同意你的看法。但是如果有人已经做了比较,或者已经在同一条船上。我更喜欢从他们的经验中学习,而不是自己尝试。@user3504386一般来说,在这种情况下——因为两个框架将做几乎相同的事情——我更喜欢代码行数较少的框架,以便更好地编写/读取代码。在你的情况下,我会(按照我的直觉)说双重转换比单一转换慢。然而,JSON比二进制序列化的Base64字符串更冗长,所以需要考虑带宽是瓶颈还是CPU…@ NATANDROTMAN,除非数据在文本内容内部占主导地位,在这种情况下JSON可能比(BASE-64)-Out-8(UTF-8)更有效。