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

时间:2014-07-06 22:24:47

标签: serialization unity3d json.net protobuf-net

鉴于我的服务器API期望使用C#字符串,建议采用哪两种方法?哪一个会导致字符串长度最短?

1)Protobuf-net 使用protobuf-net转换对象< - >字节数组 使用Convert.ToBase64String方法转换字节数组< - >串

2)直接使用Json .Net转换对象< - >串

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

你有什么建议?

1 个答案:

答案 0 :(得分:0)

好的,所以这是我的思考过程,我希望可以帮助您在两者之间作出决定:

在决定哪一个更好之前,我们需要更好地掌握问题的背景。优化总是必须在明确定义的“适应度”参数下完成。 我的意思是:

  • 如果你受CPU使用率的限制,我会测试哪些代码使用更多的CPU来执行。
  • 如果带宽是个问题,您需要查看发送最小数据包的方法。 (在这种情况下,二进制序列化的base64应该是答案。)
  • 如果代码可读性是一个因素,您可能应该考虑哪些代码更容易阅读/理解,同时减少要编写的文本。 (在这种情况下,我怀疑JSON路由具有更好的可读性)

总的来说,我会警告不要过度优化。主要是因为你可能花费更多的时间来思考和比较,而不是你的“未经优化的”代码所丢失的:) 也就是说,只有在你能清楚地定义瓶颈时才能进行优化。

希望这有助于:)