如何在 Rust 二进制文件运行之间将文件保存在内存中?

How can I keep a file in memory between runs of the rust binary?

在开发和测试时,我有一个非常大的文件需要加载到内存中。每次我 运行 程序大约需要 20 秒。

有没有办法把文件保存在内存中,这样就不需要每次都加载了?

这取决于你所说的“已加载”是什么意思。

如果您指的是将数据从存储器传输到 ram,这或多或少就是您的操作系统的 IO 缓存已经应该做的事情,假设您有足够的备用内存并且您没有使用绕过该缓存的方法.

在 linux 上它称为页面缓存,您可以通过 fincore 检查文件是否在缓存中。或者您可以通过 echo 3 > /proc/sys/vm/drop_caches 模拟缓存处于冷状态,这将丢弃其内容(需要 root)。

如果您的意思是将字节从 OS 的缓存移动到您的应用程序中,那么只要您为读取调用使用足够大的块大小或使用 mmap,这应该不会花费太多时间。后者是一把双刃剑,使用不当实际上会导致减速。

如果您的意思是将字节解码为某些特定于应用程序的逻辑,那么这不是 IO,而是反序列化。