3

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

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

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

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

我突然想到 ramdrive 可能会解决这个问题,但自 MS-DOS 6 以来我还没有玩过其中一个。有什么值得一看的商业产品吗?有人对通过代码模拟物理驱动器有任何其他想法吗?我们在 .NET 3.5 上。

4

4 回答 4

1

带有免费软件版本的 RAMDisk

微软版

如何

于 2009-12-23T10:25:40.040 回答
0

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

于 2010-01-01T07:04:49.557 回答
0

在 Windows 中也可以通过管道输出 -如果可执行文件仅生成标准输出的输出,则可以使用它。

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

于 2009-08-31T06:34:44.877 回答
0

如果您在 Vista 上运行,有一个商业 Ramdisk 产品可能适合。如果您的系统已经使用了大部分内存,则可能需要 x64 版本,以确保您最终不会进行过多的页面交换。

另一种选择是在 15000 RPM 磁盘或 SSD(固态磁盘)上花费一些现金,尽管这会比 RAM 磁盘慢。

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

于 2009-08-31T06:46:05.463 回答