Javascript 在移动一个数组的位置之后,它会变得慢很多,这是为什么呢?

Javascript 在移动一个数组的位置之后,它会变得慢很多,这是为什么呢?,javascript,arrays,performance,Javascript,Arrays,Performance,我有一个庞大的团队(1百万人)。每个团队都有10个要素。 元素池存储在映射(id->{id,points})中。 如果我计算每个队的分数,速度非常快(如预期的那样)。 但是如果我改变数组,点的计算性能会降低大约5倍。 有人知道可能是什么问题吗?如果您想看一下,下面是代码:当您第一次创建数组时,大部分内存是连续分配的。 每个元素都指向可能连续存储在内存中的下一个元素。洗牌数组后,值将保留在相同的地址。只有相应的指针改变。所以现在你的记忆不是连续的。它是随机传播的 现在,当你尝试遍历它时,计算机硬件

我有一个庞大的团队(1百万人)。每个团队都有10个要素。 元素池存储在映射(id->{id,points})中。 如果我计算每个队的分数,速度非常快(如预期的那样)。 但是如果我改变数组,点的计算性能会降低大约5倍。
有人知道可能是什么问题吗?如果您想看一下,下面是代码:

当您第一次创建数组时,大部分内存是连续分配的。 每个元素都指向可能连续存储在内存中的下一个元素。洗牌数组后,值将保留在相同的地址。只有相应的指针改变。所以现在你的记忆不是连续的。它是随机传播的

现在,当你尝试遍历它时,计算机硬件要比在顺序内存中花费更多的时间来查找那些随机分布的内存位置。对于小型阵列,您不会注意到这一点,但在处理像您这样的海量数据时,这将是一个因素


我并没有在互联网上找到支持我的答案的消息来源,我会对此发表评论而不是回答,但我没有足够的声誉。这个答案是基于我对CS的理解,这是我最初的想法,但是如果它在内存中,那么对这些指针的访问时间不应该是相同的,不管它们是否是顺序的吗?可能是。。。这实际上很大程度上取决于内存的类型。我不想深入研究硬件,因为那不是我的事。我也不太了解RAM,但以SSD和HDD为例。如果要访问随机内存位置,HDD将需要更多的时间。SSD将更快地访问非顺序内存地址。