c# - 内存映射文件与 RAM 磁盘

标签 c# .net filesystems memory-mapped-files ramdisk

对于游戏 Minecraft,运行服务器应用程序时的一般方法是在 RAMDisk 中运行它,因为它使用数百个小文件来生成世界,I/O 速度是主要瓶颈。

在最近的尝试中,我尝试使用 Dokan/ImDisk 以编程方式为服务器应用程序创建 RAMDisk。 Dokan 比普通硬盘慢得多,我无法让 ImDisk 正常运行。由于这是我所知道的仅有的 2 个具有 .NET API 的文件系统驱动程序,因此我现在正在寻找替代方案。

我之前曾提到过尝试使用内存映射文件。我目前的方法是创建 RAMDisk,在游戏服务器数据文件夹和 RAMDisk 之间创建符号链接(symbolic link),然后启动游戏服务器进程。

  • 内存映射文件能否以同样的方式运行,I.E.创建一个我可以创建符号链接(symbolic link)的虚拟驱动器?比如G:\Data_Files\?

  • 是否有任何其他替代 Dokan/ImDisk 的 .NET API/绑定(bind) float ?

最佳答案

在查看了一堆解决方案并做了一些基准测试之后,我们不能放弃 RAMDisk from DataRam .我们尝试了一堆 Windows 驱动程序和一些其他免费赠品解决方案,最终无法证明与商业解决方案的微小价格标签相比,这些费用是合理的。

关于c# - 内存映射文件与 RAM 磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7049910/

相关文章:

.net - 160 位 SHA1 散列的前 32 位是否可以替代 CRC32 散列?

c++ - 将目录迭代器切换为同一循环的递归?

c# - 命名空间 'Optimization' 中不存在类型或命名空间名称 'System.Web'

c# - Excel在后面的代码中将数据添加到WorksheetPart

.net - 在 .NET 中自动扩展数组?

c# - 使用未知名称/参数数量更新 sql 语句

javascript - Node.js:检测文件,用 fs.createWriteStream() 打开,被删除

Git diff 报告本地更改 'old mode'/'new mode'

c# - .NET 图表类 - 如何在同一图表上显示不同类型的间隔

c# - 如何使用我自己的类作为 edmx 模型类?