【发布时间】:2010-11-24 06:30:02
【问题描述】:
我们有一个命令行 exe,它从文本文件中获取输入并生成输出文本文件。它用于复杂的工业模拟。
这个 exe 的源代码早已不复存在。现在很容易创建一个 .NET 包装器来控制此 exe 的执行并通过 Web 服务与外部应用程序链接。
不幸的是,一个新的要求是在这个黑盒模型上运行优化。现在有多种方法可以执行黑盒优化,但它们都需要调用可执行文件数千(数百万?)次。很明显,基于磁盘的文本文件的创建和解析是模拟过程的瓶颈。
无论如何我可以欺骗这个可执行文件不写入物理磁盘吗?如果我们在 Unix 上,我想管道可以解决问题,但我们的部署服务器是 Windows Server 03。
我突然想到 ramdrive 可能会解决这个问题,但自 MS-DOS 6 以来我还没有玩过其中一个。有什么值得一看的商业产品吗?有人对通过代码模拟物理驱动器有任何其他想法吗?我们在 .NET 3.5 上。
【问题讨论】:
-
如果您已经知道磁盘访问是瓶颈,并且您知道这是给定的,为什么要优化您没有源的可执行文件开头的代码?
-
我不想优化可执行文件,我想优化可执行文件实现的模型。即使模型未知,您仍然可以使用基于梯度下降的奇特技术来尝试估计参数和最优解空间。无论如何,这不是辩论的主题。我在这里询问如何模拟磁盘访问。
-
您的输入/输出文件有多大?缓存磁盘控制器可能是答案...
-
文件一点都不大,我们说的是3或4个文件,总共不到50KB。不幸的是,我们无法访问服务器,因此硬件解决方案是不可能的。
-
Microsoft 提供了适用于 Windows 2000 的 RAMdisk 驱动程序(包括源代码)。 support.microsoft.com/default.aspx?scid=kb;en-us;Q257405 不确定它是否会在 2003 下运行。