JavaScript效率: big object vs many arrays

标签 javascript arrays node.js performance websocket

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

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

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

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

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

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

最佳答案

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

您遇到一个问题:当您从套接字数组中删除套接字但不删除该位置时会发生什么?错误!

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

请不要考虑“效率”。你的问题的答案不是关于效率,而是关于可维护性、稳健性和简单性。这些事情通常会自然地促使您获得更好的性能,但只有当您遇到性能问题时,您才应该关心性能。

记住(把它写在墙上):Premature optimization is the root of all evil .

关于JavaScript效率: big object vs many arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322388/

相关文章:

javascript - 绕过 Angular URL 路由

javascript - 使用 jQuery 从 JSON 树读取特定值

javascript - 如何结束()文件流

node.js - 所有 promise 完成后返回值

Node.js:由于 node-sass 和 node-gyp,Python 未找到异常

javascript - JS中声明成员函数

php - 强制 json_encode 将(稀疏)数组编码为 php 中的索引数组

javascript - 在旧版本的 Firefox (v41.0) 上运行 Selenium (v3.4.0) 测试

java - Android.view.View错误

C 在函数中初始化一个字符数组,或者我应该将它作为参数传递