【发布时间】:2016-08-05 01:10:13
【问题描述】:
哪一个对性能更好 - 具有查找函数以查找具有特定 ID 的数组中的对象或仅使用 for in 循环与数组中的孔?
在我的情况下,我的玩家数组是动态的。假设连接了 3 个玩家,所以我的数组如下所示:
players = [player1, player2, player3]
将数组键作为玩家 ID 很容易,所以我会知道 ID 为 2 的玩家在玩家数组中排名第三,为了访问他,我只需要使用:players[2],但随着第二个玩家离开他创建一个数组孔:
players = [player1,,player3]
据我所知,这个洞会降低使用数组的性能,因为我经常使用 for-in 循环,所以拥有一个播放器对象数组而不是留下数组洞我只是拼接出洞?但是这样我就不能将数组键作为玩家 ID,所以我必须使用 ID 查找功能。那么到底这两种选择中哪一种对性能更好呢?或者有更好的方法来解决这个问题?
谢谢!
【问题讨论】:
-
对于包含 2 个(或 200 或 2000 个)元素的数组,这并不重要。
-
为什么不使用属性键是玩家 ID 的 javascript 对象{}
-
"程序员浪费大量时间去思考或担心程序中非关键部分的速度,而在考虑调试和维护时,这些效率上的尝试实际上会产生强烈的负面影响。我们应该忘记小的效率,比如说大约 97% 的时间:过早的优化是万恶之源。但我们不应该放弃关键的 3% 的机会” Donald Knuth
-
我认为这是一个很好的问题。因为这不仅仅是关于性能。如果像这样实现,迟早你必须进行清理,删除所有漏洞并重新分配 ID,否则数组会变得太大。
标签: javascript arrays performance