我正在处理一个封闭的源库,需要将一些数据传递给它才能工作。此数据大约为150 MB。我在初始化此lib的主类时将这些数据加载到内存中,该类具有以下构造函数:
Foo::Foo(const std::string path_to_data_file);
Foo
接受数据作为文件,没有另一个直接接受数据的重载(作为字符串或字节数组......)。
在我的情况下调用库的唯一可能方法是将我拥有的数据写入磁盘,然后将文件的路径传递给库,这是一个非常糟糕的想法。
是否有任何技术可以将某种虚拟路径传递给库,从而导致直接从内存而不是磁盘读取数据?
换句话说,我正在寻找(如果它存在甚至可能)某种技术,它创建一个虚拟文件,导致磁盘上的内存地址而不是物理地址。
我知道正确的解决方案是编辑库并将数据层与处理层隔离开来。但是,至少现在这是不可能的..
修改
解决方案应该是跨平台的。但是,我可以猜测这些问题通常依赖于操作系统。所以,我正在寻找Linux和Windows解决方案。
图书馆正在做一些计算机视觉资料,数据是一种训练有素的模型
答案 0 :(得分:2)
可能是特定于操作系统的。但是您可以将数据放入某些RAM或基于虚拟内存的文件系统,如tmpfs。
然后你不需要更改库,只需在tmpfs文件系统中传递一些文件。
顺便说一下,在某些操作系统上,如果最近编写了一个文件,它就位于page cache(因此在RAM中)。
另请注意,阅读150Mb不应该花费太多时间。如果你不能把它放在某些tmpfs或RAM磁盘上,请尝试至少使用一些SSD。