好的是为Typed Array添加属性?

时间:2014-11-17 18:13:22

标签: javascript properties typed-arrays

我有一个类型化的数组(一个4元素的Uint8ClampedArray,用于颜色)我想添加一些属性,类似于对象。例如,一个是Uint32视图,可以快速获取像素值。可选地,另一对可以是颜色在颜色图中的地图/索引对。

这是可能的,即没有错误并且工作正常,但会导致性能问题,还是其他一些不良副作用?

我不会迭代它,只是通过颜色[n],n在0-3中访问,因此不会成为问题,并按名称访问属性。

我问,因为Typed Arrays被添加为高性能,独立于设备的交换......就像在cpu和gpu之间那样,我不想搞砸了。

1 个答案:

答案 0 :(得分:3)

如果数组具有自定义属性,则在访问数组元素时,简单的性能测试似乎没有显示任何有意义的差异。

请在此处查看测试结果:

http://jsperf.com/uint8clampedarray-with-custom-properties

或者,使用以下代码自行运行测试:

准备代码

var i, val;

var uintc8_vanilla_array = new Uint8ClampedArray(200);
for ( i = 0; i < 200; i++ ){
  uintc8_vanilla_array[i] = "foobar";
}

var uintc8_custom_array = new Uint8ClampedArray(200);
uintc8_custom_array.foo = "bar";
for ( i = 0; i < 200; i++ ){
  uintc8_custom_array[i] = "foobar";
}

<强>控制

for ( i = 0; i < 200; i++ ){
  val = uintc8_vanilla_array[i];
}

自定义属性测试

for ( i = 0; i < 200; i++ ){
  val = uintc8_custom_array[i];
}

<强>结果

enter image description here