【发布时间】:2016-03-31 09:17:34
【问题描述】:
我正在开发一个基于 Web 的小游戏(websockets 和 nodejs),我只是好奇哪种方法会被认为是更好的实践/更有效的方法。
我有一堆可以连接到游戏服务器的客户端。每个客户端都有一堆不同的属性需要保存..
- 位置:x、y、方向、速度等
- 属性:能量、生命值、伤害等
- websocket 连接信息
- 控件:按键等
- 其他几件事
目前我已将这些区域划分为单独的数组,因此如果我需要获取用户 12 的位置,我会查看 usrPos[12].x 以及是否需要将信息发送到客户端通过 websocket 我查看 usrSoc[12].id 等等。
我最近一直在想是否应该将所有信息合并到一个数组中。所以我查看 usr[12].pos.x 和 usr[12].soc.id。显然,这会创建一个更大的对象数组,但在一定程度上提高了可读性。此外,我不需要跟踪 10 个不同的数组来为一个用户存储数据。
那么哪种方式更好呢?一种方法比另一种更有效吗?有兴趣听听人们的想法。谢谢!
【问题讨论】:
-
这对于Stack Overflow来说太宽泛了
-
实际上它只创建更多个对象,而不是更大个对象。尽管they might have different access characteristics,理论上这两种方法都应该占用相同数量的空间。实际上,这根本不重要。如果它对您来说足够重要,那么您应该根据您的真实数据对解决方案进行基准测试。
-
几乎可以肯定的是,不将逻辑连接的数据拆分为不同的数据结构在概念上更容易且不易出错。例如。想想如果在两种情况下都需要删除其中一个用户,您需要做什么;或者是否需要对用户进行排序;或者,如果在你实现了这些东西之后,需要添加一个新属性。
标签: javascript arrays node.js performance websocket