没有理由将您的字段拆分为数组:数组在空间或时间效率方面不会给您带来任何好处。最大的例外是基于文本的表示,例如 JSON,它必须包括“字段”的名称及其值。我特别指的是所有各方都知道相关数据结构的二进制表示。根据我对 Kryonet 的快速浏览,它看起来实际上是一个二进制表示。
例如,想象一个具有类似于以下模式的对象:
{
x: 5.483,
y: 0.7245
}
该对象有两个浮点字段。二进制表示可能正好是 8 个字节长 - 每个浮点数 4 个字节。这假设所有各方都知道一个数据包由两个浮点数组成。或者,您可以使用类型注释二进制表示。这些第一个版本可能类似于:
0000000 af40 bc74 393f d578
0000008
另一方面,文本表示可能类似于 JSON:
{"x":5.483,"y":0.7245}
该表示具有可变大小,具体取决于所讨论的浮点数的确切值(与大小无关)。将此与将其编码为 JSON 中的数组进行比较:
[5.483,0.7245]
这总是比对象变体小,但不一定比二进制表示短。此外,与二进制表示相反,文本表示具有可变大小,需要包含(长度前缀)或标记(例如,使用空字符)。
至于网络速度,这完全取决于您在做什么以及如何定义速度。您可以说速度是您可以以字节/秒为单位传输大量数据的速率。您也可以说速度是一个数据包到达其目的地所需的时间。另一个度量标准是往返时间 (RTT),通常(但不总是)大约是所讨论的两个程序之间在任一方向上单次行程的两倍。
如果您试图最大化数据/时间的速率,您会希望数据占用更少的空间 - 以更小的数据表示。如果你试图最小化点之间的时间,同样的事情也会发生,但有一个重要的警告:TCP 等网络协议通常会实现 Nagle 算法,它会在短时间内等待发送数据并一起发送多个小数据包(这可以减少网络拥塞并且可以禁用)。