Javascript效率:大对象与多个数组

时间:2016-03-31 00:56:26

标签: javascript arrays node.js performance websocket

我正在努力建立一个基于网络的小游戏(websockets和nodejs),我只是好奇哪种方法被认为是更好的练习/更高效。

我有一堆可以连接到游戏服务器的客户端。每个客户端都有许多需要保存的不同属性..

  • 位置:x,y,方向,速度等
  • 属性:能量,马力,伤害等。
  • websocket连接信息
  • 控件:按键等
  • 其他一些事情

目前我已将这些区域划分为单独的阵列,因此如果我需要获得用户12的位置,我会查看 usrPos [12] .x ,如果我需要将信息发送到客户通过websocket我看 usrSoc [12] .id 等等。

我最近一直想知道我是否应该将所有信息合并到一个数组中。所以我看看 usr [12] .pos.x usr [12] .soc.id 。显然,这会创建一个更大的对象数组,但在某种程度上提高了可读性。此外,我不需要跟踪10个不同的数组来存储一个用户的数据。

那么哪种方式更好?一种方法比另一种更有效吗?有兴趣听听人们的想法。谢谢!

1 个答案:

答案 0 :(得分:2)

哪种方式更好?好吧,我们在谈论基本的OOP,这里:你有许多不同的“数组”,其中包含有关客户端的信息,客户端的信息分散在许多不同的数组中,每个数组必须与另外10个数组共享索引。

您遇到了问题:从套接字阵列中删除套接字时会发生什么,但是不删除该位置? BUG!

因此,如果客户端是客户端,则将其视为一个整体,使用10个(在您的示例中)复合属性,关于客户端的套接字,其属性等。

请不要考虑“效率”。您的问题的答案不是关于效率,而是关于可维护性,稳健性和简单性。这通常会让你自然地朝着更好的性能发展,但只有在遇到性能问题时才应该关心性能。

请记住(将其写在墙上):Premature optimization is the root of all evil