javascript - 在 Web 应用程序中从大文件中读取许多小文件
问题描述
我正在开发一个网络应用程序,它需要从一个大文件(~1TB)中执行许多小读取(5000 万次读取,每个几百字节)。我尝试了不同的方法,包括在网络工作者中使用 FileReaderSync
onmessage = function(e) {
const reader = new FileReaderSync();
for (let i = 0; i < N_READS; i++) {
const sliceStart = i * BYTES_BETWEEN_READS;
const sliceEnd = sliceStart + BYTES_TO_READ;
const sliceToRead = e.data.slice(sliceStart, sliceEnd);
reader.readAsArrayBuffer(sliceToRead);
}
}
(e
发送给包含 的网络工作者的消息在哪里File
)但性能很糟糕(比原生 C 应用程序慢很多倍)。我怀疑这是因为访问浏览器提供的沙盒文件系统需要每次读取都经过检查以减慢速度。读取不是连续的,仅覆盖文件中大约 1% 的字节,因此我认为以较少数量的大块读取整个文件然后从中提取所需数据(丢弃其余的读取的字节数)。是否有更高性能的方法可以从 Web 应用程序以这种方式访问文件?
解决方案
推荐阅读
- javascript - 未单击 div 后触发事件侦听器
- c# - 延迟 2 个日期的 MongoDb 索引
- excel - 更新/编辑数据 - VBA Excel
- flutter - 如何根据我的文本长度扩展我的容器?
- vue.js - Vuejs2:Vue 表 2 - 多个自定义过滤器
- django - 在打开的 edx MEDIA_ROOT 和 MEDIA_URL 中设置 azure blob
- angular - 离子模态超过材料日期选择器?
- sql - 在sql中合并内部连接返回的列
- macos - 通过 anaconda 安装 python 3.8 的“解决环境”失败
- c# - 我如何才能重构多个只有条件