我使用像[x0, y0, x1, y1, x2, y2, ..., xN, yN]
为了使用更少的内存并可能提高性能,我想将这些数组存储在类型化数组中。我发现Int32Array
可以存储坐标范围。
如何将这些数组转换为Int32Array
,我可以执行以下操作:
var coords = [-8774772, 6713301, -8774922, 6712895, -8774289, 6711450, ..., -8774772, 6713301]
var typedArray = new Int32Array(coords);
或者我应该使用ArrayBuffer
?
此外,是否可以使用更少的内存进行优化,例如转换坐标以适应Int16Array
?
答案 0 :(得分:1)
您可以使用键入的数组或数据视图,我将使用dataview:
var coords = [-8774772, 6713301, -8774922, 6712895, -8774289, 6711450, -8774772, 6713301];
var buff = new ArrayBuffer(coords.length*4);
var dv = new DataView(buff);
coords.forEach(function(d,i){
dv.setInt32(i*4,d);
});
dv.getInt32(0); //-8774772
dv.getInt32(4); //6713301
dv.getInt32(8); //-8774922
dv.getInt32(12); //6712895
至于性能,我没有看到任何令人信服的证据表明它们比使用普通数组快得多。我甚至不知道供应商是否在幕后使用普通数组。