javascript-比较:使用缓冲区视图(Uint8与Float64)调整ArrayBuffer的大小,我是否缺少某些东西?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-比较:使用缓冲区视图(Uint8与Float64)调整ArrayBuffer的大小,我是否缺少某些东西?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1541字,纯文字阅读大概需要3分钟。
内容图文
![javascript-比较:使用缓冲区视图(Uint8与Float64)调整ArrayBuffer的大小,我是否缺少某些东西?](/upload/InfoBanner/zyjiaocheng/659/a808433deeac41da9c1daaa0d77e3a2b.jpg)
我一直在寻找如何调整ArrayBuffers大小的方法,下面是两种方法:
1(Uint8Array):
function resizeUint8(baseArrayBuffer, newByteSize) {
var resizedArrayBuffer = new ArrayBuffer(newByteSize),
resizedView = new Uint8Array(resizedArrayBuffer),
baseView = new Uint8Array(baseArrayBuffer);
for(var i = 0; i < baseView.length; i++) {
resizedView[i] = baseView[i];
}
return resizedArrayBuffer;
}
2(Float64Array):
// newByteSize is divisible by 8
function resizeFloat64(baseArrayBuffer, newByteSize) {
var resizedArrayBuffer = new ArrayBuffer(newByteSize),
resizedView = new Float64Array(resizedArrayBuffer),
baseView = new Float64Array(baseArrayBuffer);
for(var i = 0; i < baseView.length; i++) {
resizedView[i] = baseView[i];
}
return resizedArrayBuffer;
}
比较:#1利用Uint8Arrays,因此对于baseArrayBuffer中的每个字节,您必须将其分别复制到调整大小的数组缓冲区中.现在,对于#2,我使用了Float64Array,因此我可以迭代减少8倍以上的索引来获得相同的结果.
关注:使用Float64Array似乎是显而易见的“性能更高”的方法.但是,使用Float64Array时我缺少什么吗?通过Float64Array视图设置每个索引时,我是否会失去数值精度?还有其他缺点吗(除了确保字节大小可以被8整除)?
解决方法:
不用复制for循环中的每个元素,而是使用typedArray.set方法,它更快
function resizeUint8(baseArrayBuffer, newByteSize) {
var resizedArrayBuffer = new ArrayBuffer(newByteSize),
len = baseArrayBuffer.byteLength,
resizeLen = (len > newByteSize)? newByteSize : len;
(new Uint8Array(resizedArrayBuffer, 0, resizeLen)).set(new Uint8Array(baseArrayBuffer, 0, resizeLen));
return resizedArrayBuffer;
}
JSFiddle测试:http://jsfiddle.net/92zsn529/
内容总结
以上是互联网集市为您收集整理的javascript-比较:使用缓冲区视图(Uint8与Float64)调整ArrayBuffer的大小,我是否缺少某些东西?全部内容,希望文章能够帮你解决javascript-比较:使用缓冲区视图(Uint8与Float64)调整ArrayBuffer的大小,我是否缺少某些东西?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。