我有一个应用程序,其中初始化涉及从文件(〜> 10 GB)中读取非常大的数据,然后对这些数据(类型为Dictionary)执行一些计算。即使我的数据是固定的/从未更改过,初始化步骤每次都需要几个小时。我想做的是以某种方式使用一个进程将这些数据预加载到内存中,并在同一台机器上的另一个进程直接从其中读取所有数据一次,并且没有任何 COPY。到目前为止,我已经找到了几种方法:
.Net 远程处理远程对象。然而,这种方法承担了编组成本,因此不适用于我的情况,因为数据传输会在某一时刻产生两倍的内存。
内存映射文件。这个选项似乎仍然需要数据复制,就我而言,它并不理想,因为我需要复制所有 >10GB 的数据。我发现了一些关于使用不安全访问内存地址的文章,但我不完全知道它是如何工作的。
WCF 命名管道。这种方法似乎类似于远程处理,并且仍然需要数据传输。
我的方案最有效的方法是什么?