问题标签 [memmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 不允许 Numpy memmap 负维度
当 mode != 'r' 时,即使超出文件末尾的正偏移量也是有效的;
上面的代码会产生一个错误:
如果偏移被移除,则没有错误。
有人有问题吗?你是怎么解决的?
谢谢
nim-lang - Nim:使用只读内存映射文件
我刚刚开始使用 Nim,因此这可能是一个简单的问题。我们需要对存储在文件中的数据进行多次查找。其中一些文件太大而无法加载到内存中,因此采用 mmapped 方法。我可以通过 memfiles 对文件进行映射,并且我手边有一个指针或 MemSlice。文件和内存区域是只读的,因此具有固定大小。我希望我能够以不可变的固定大小字节和字符数组的形式访问数据,而无需复制它们,利用所有可用于 seq、数组、字符串等的现有功能。所有 MemSlice / string 方法都复制数据,这是公平的,但不是我想要的(在我的用例中不需要)。
我了解数组、字符串等类型有一个指向数据的指针和一个 len 字段。但是找不到用指针和 len 创建它们的方法。我认为这与所有权和对内存的引用有关,这可能比我的切片寿命更长。
更新:我确实找到了https://forum.nim-lang.org/t/4680#29226,它解释了如何使用 OpenArray,但 OpenArray 只允许作为函数参数,而你 - 如果我没记错的话 - 它是不像普通数组。
谢谢你的帮助
matlab - Matlab:读取大型二进制文件的部分/序列的最快方法
我想从一个大的(约 11 GB)二进制文件中读取部分内容。当前可行的解决方案是使用 加载整个文件 ( raw_data
) fread()
,然后裁剪出感兴趣的部分 ( data
)。
问题:是否有更快的方法来读取文件的小部分(占总文件的 1-2%,部分顺序读取),给定 Matlab 中的二进制掩码(即特定字节的逻辑索引)?具体如下。
我的具体案例的注意事项:
data
感兴趣的(26+e6 字节,或约 24 MB)大约是raw_data
(1.2e+10 字节或约 11 GB)的 2%- 每 600.000 字节包含 ca 6.500 字节读取,可以分解为大约 1.200 个读取跳过周期(例如“读取 10 个字节,跳过 5000 个字节”)。
- 整个文件的读取指令可以分解为大约 20.000 个类似但(不完全相同)的读取跳过周期(即大约 20.000x1.200 个读取跳过周期)
- 从 GPFS(并行文件系统)读取文件
- 过多的 RAM、最新的 Matlab 版本和所有工具箱都可用于该任务
我最初关于 fread-fseek 循环的想法被证明比读取整个文件要慢得多(见下面的伪代码)。分析显示fread()
是最慢的(被调用超过一百万次可能对这里的专家来说是显而易见的)。
我考虑的替代方案:memmapfile()
[ ref ] 据我所知,没有可行的读取多个小部分。MappedTensor库可能是我要研究的下一件事。相关但没有帮助,只是链接到文章:1 , 2。
仅供参考:为了获得概览和透明度,我编制了一些图(下图)的第一个 ca 6.500 读取位置(我的实际数据),在折叠成 fread-fseek 对后,可以总结为 1.200 fread- fseek 对。