Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ArrayBufferView构造函数中的奇怪限制_Javascript_Arraybuffer - Fatal编程技术网

Javascript ArrayBufferView构造函数中的奇怪限制

Javascript ArrayBufferView构造函数中的奇怪限制,javascript,arraybuffer,Javascript,Arraybuffer,声明可以通过以下方式创建ArrayBufferView: TypedArray(ArrayBuffer buffer, optional unsigned long byteOffset, optional unsigned long length) 但是,第二个参数,字节偏移量,有一个限制: 给定的字节偏移量必须是 特定类型,否则将引发异常 这意味着我们无法处理双字节视图的奇数偏移,例如: var view1 = new Uint8Array([0, 1, 2, 3

声明可以通过以下方式创建ArrayBufferView:

TypedArray(ArrayBuffer buffer, 
           optional unsigned long byteOffset, optional unsigned long length)
但是,第二个参数,
字节偏移量
,有一个限制:

给定的字节偏移量必须是 特定类型,否则将引发异常

这意味着我们无法处理双字节视图的奇数偏移,例如:

var view1  = new Uint8Array([0, 1, 2, 3]),
    view2 = new Uint16Array(view1.buffer, 1, 1);
因此,即使[1,2]可以正确地转换为Uint16,我也无法通过这种方式访问这些元素。 字节偏移量限制似乎显著降低了
ArrayBufferView
的灵活性


有人知道为什么施加此限制吗?

施加此限制是为了保持类型化数组视图(如Uint16Array和Float32Array)的最大性能。这些类型设计用于在机器的自然对齐中对数据进行操作。支持未对齐的负载会使快速情况的速度降低到无法接受的程度,或者导致性能“悬崖”,程序运行速度通常会很快,除非它们的速度降低了很大一部分

DataView旨在支持单个数据元素的未对齐加载和存储,特别是用于处理网络或磁盘I/O的情况,其中文件格式可能没有任何对齐限制