JavaScript中是否有理想的数组大小?

Ted*_*opp 16 javascript arrays memory-management

我已经看到各种语言中的小实用例程,对于所需的数组容量,它将为数组计算"理想大小".当分配的数组大于容量时,通常使用这些例程.它们通常通过计算数组长度来工作,使得分配的块大小(以字节为单位)加上内存分配开销是给定容量所需的最小精确2.根据内存管理方案,这可以显着减少内存碎片,因为内存块已分配然后被释放.

JavaScript允许构建具有预定义长度的数组.那么"理想尺寸"的概念是否适用?我可以想到反对它的四个论点(没有特别的顺序):

  • JS内存管理系统的工作方式不会受益于这种策略
  • JS引擎已经在内部实现了这样的大小调整策略
  • JS引擎并没有真正将数组保持为连续的内存块,所以整个想法都没有实际意义(除了类型化的数组)
  • 这个想法适用,但内存管理依赖于引擎,没有任何单一的"理想大小"策略可行

另一方面,也许所有这些参数都是错误的,一点实用例程实际上是有效的(如:在脚本性能方面做出可衡量的差异).

那么:可以为JavaScript数组编写一个有效的"理想大小"例程吗?

Tra*_*s J 8

javascript中的数组是它们的核心对象.它们只是通过api像阵列一样.使用参数初始化数组仅使用该值设置length属性.

如果传递给Array构造函数的唯一参数是0到232-1(含)之间的整数,则返回一个长度设置为该数字的新JavaScript数组.- 阵列MDN

此外,没有数组"类型".数组是Object类型.因此它是一个Array Object ecma 5.1.

因此,使用之间的内存使用量没有差异

var one = new Array();
var two = new Array(1000);
Run Code Online (Sandbox Code Playgroud)

除了长度属性.使用chrome的内存时间轴在循环中进行测试时,也会检查出来.创建1000个这两个都导致我的机器上大约2.2MB的分配.

一

二 在此输入图像描述