Javascript ArrayBuffer修改性能

Javascript ArrayBuffer修改性能,javascript,arraybuffer,typed-arrays,Javascript,Arraybuffer,Typed Arrays,我想用JavaScript修改ArrayBuffer的内容 从“帮助”部分: 不能直接操作ArrayBuffer的内容; 而是创建一个类型化数组对象或数据视图 对象,该对象以特定格式表示缓冲区,并使用 读取和写入缓冲区的内容 我不需要打印任何东西到控制台,我只需要修改一些字节的ArrayBuffer 因此,如果我有一个大型阵列缓冲器: 哪一个更有效: TypedArray值设置操作比DataView更简单。我可以想象,使用切片版本会产生一些开销,但在这些情况下,内存中不会分配更多的内容,因此,如

我想用JavaScript修改ArrayBuffer的内容

从“帮助”部分:

不能直接操作ArrayBuffer的内容; 而是创建一个类型化数组对象或数据视图 对象,该对象以特定格式表示缓冲区,并使用 读取和写入缓冲区的内容

我不需要打印任何东西到控制台,我只需要修改一些字节的ArrayBuffer

因此,如果我有一个大型阵列缓冲器: 哪一个更有效:
TypedArray值设置操作比DataView更简单。我可以想象,使用切片版本会产生一些开销,但在这些情况下,内存中不会分配更多的内容,因此,如果是一次性的,您将无法测量其中任何一个版本的任何有意义的差异。所以真正的问题是,“你是否遇到了一个真正的瓶颈,这个决定可能会产生影响?”。记住TypedArray视图不需要任何成本。所以你是说
TypedArray 1
是最好的方式吗?我是说在这种情况下这不重要。但是,是的,一般来说,理论上它应该是“最有效”的在这里,他们显示当前(2018年)的dataview比typedarray慢4倍。刚找到这个。无论如何,接近投票“需要细节或清晰”似乎不公平不,这并不“不公平”。正如我在第一次评论中所说,没有明确的理由,问哪个更快是没有意义的。他们都将毫不费时。无论您看到什么差异,都是由于其他管理费用造成的。如果您的案例需要DataView(例如,您希望在不同的索引中设置不同的值类型),那么DataView更合适。如果看不到确切的情况,我们只能给出毫无意义的结论:你的问题需要更多的细节和清晰度。
const buffer = new ArrayBuffer(16*1024);
const typedArray1 = new Uint8Array(buffer);
typedArray1[16000] = 65;

const typedArray2 = new Uint8Array(buffer,16000);
typedArray2[0] = 65;

const typedArray3 = new Uint8Array(buffer,16000,1);
typedArray2[0] = 65;

const dataView1 = new DataView(buffer);
dataView1.setUint8(16000, 65);

const dataView2 = new DataView(buffer, 16000);
dataView2.setUint8(0, 65);

const dataView3 = new DataView(buffer, 16000, 1);
dataView3.setUint8(0, 65);