模拟物理磁盘以加快执行速度?

时间:2009-08-31 06:12:26

标签: device-emulation ramdisk

我们有一个命令行exe,它从文本文件中获取输入并生成输出文本文件。它用于复杂的工业模拟。

这个exe的源代码早已不复存在。现在很容易创建一个.NET包装器来控制这个exe的执行,并通过Web服务与外部应用程序链接。

不幸的是,新要求是对此黑盒模型进行优化。现在有各种方法可以执行黑盒优化,但它们都需要调用可执行文件数千(数百万?)次。很明显,基于磁盘的文本文件的创建和解析是模拟过程的瓶颈。

无论如何我可以欺骗这个可执行文件而不写入物理磁盘吗?如果我们在U​​nix上,我认为管道可以解决问题,但我们的部署服务器是Windows Server 03.

我刚刚想到一个ramdrive可以解决这个问题,但是自从MS-DOS 6以来我没有玩过其中一个。任何值得关注的商业产品?有没有人有任何其他想法通过代码模拟物理驱动器?我们在.NET 3.5上。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

在Windows中也可以输出输出 - 如果可执行文件只生成输出到标准输出,你可以使用它。

如果它实际写入文件:由于windows缓存文件系统写入,我可以想象只需编写,然后删除小文件几乎与ramdisk一样快。您是否真的尝试以实际速率运行程序,删除运行后的所有输出?如果你密切关注CPU使用情况和磁盘队列,你应该知道普通的旧磁盘缓存是否足够。

答案 2 :(得分:0)

如果你在Vista上运行,那么commercial Ramdisk product可能适合。如果您的系统已经使用了大部分内存,则可能需要x64版本,以确保您最终不会进行太多的页面交换。

另一种选择是在15000 RPM磁盘或SSD(固态磁盘)上花一点钱,虽然这比RAM磁盘慢。

从长远来看,逆向工程处理工具并从头开始重写以避免瓶颈可能会更便宜。

答案 3 :(得分:0)

如果您在虚拟机中运行它,其虚拟磁盘的缓存是主机操作系统的责任...这意味着,您可以在VM中运行Windows服务器或多或少的任何东西,并获得额外的层缓存这在环境中有效吗?