我们有一个命令行exe,它从文本文件中获取输入并生成输出文本文件。它用于复杂的工业模拟。
此可执行文件的源代码早已不复存在。现在很容易创建一个.NET包装器,它控制这个exe的执行,并通过web服务链接到外部应用程序。
不幸的是,一个新的需求是在这个黑盒模型上运行优化。现在有各种方法来执行黑盒优化,但它们都需要调用数千(数百万?)可执行文件。很多次。很明显,基于磁盘的文本文件的创建和解析是模拟过程的瓶颈。
有没有什么办法可以让这个可执行文件不写入物理磁盘?如果我们是在Unix上,我想管道可以做到这一点,但我们的部署服务器是Windows server 03。
我突然想到一个ramdrive也许可以解决这个问题,但是自从MS-DOS 6之后我就再也没有玩过这样的东西了。有没有什么值得一看的商业产品?有没有人有通过代码模拟物理硬盘的其他想法?我们使用的是.NET 3.5。
发布于 2009-12-23 18:25:40
RAMDisk with freeware version
Microsoft version
How-to
发布于 2009-08-31 06:34:45
在windows中也可以使用Pipeing输出-如果可执行文件只生成标准输出,您可以使用它。
如果它真的写入一个文件:因为windows缓存文件系统的写入,我可以想象简单地写入,然后删除小文件几乎和ramdisk一样快。你是否真的尝试过以实际的速度运行程序,在运行后删除所有输出?如果您密切关注CPU的使用情况和磁盘队列,就应该知道普通的老式磁盘缓存是否足够了。
发布于 2009-08-31 06:46:05
如果你使用的是Vista,有一个commercial Ramdisk product可能很适合你。如果您的系统已经使用了大部分内存,则可能需要x64版本,以确保您最终不会进行过多的页面交换。
另一种选择是花点钱买一个15000转/分的磁盘或固态硬盘(固态硬盘),尽管这会比RAM磁盘慢。
但是,从长远来看,对处理工具进行逆向工程并从头开始重写可能会更便宜,以避免瓶颈。
https://stackoverflow.com/questions/1356038
复制相似问题