代码之家  ›  专栏  ›  技术社区  ›  Alex

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

  •  3
  • Alex  · 技术社区  · 15 年前

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

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

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

    有没有我可以欺骗这个可执行文件不写入物理磁盘?如果我们在Unix上,我想管道可以做到这一点,但是我们的部署服务器是WindowsServer03。

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

    4 回复  |  直到 15 年前
        2
  •  0
  •   devstuff    15 年前

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

    另一种选择是在15000转/分的磁盘或固态硬盘上花费一点现金,尽管这比RAM磁盘慢。

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

        3
  •  0
  •   Eamon Nerbonne    15 年前

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

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

        4
  •  0
  •   Andrew McGregor    15 年前

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

    推荐文章