C++ 带有文件镜像的ramdisk

C++ 带有文件镜像的ramdisk,c++,windows,filesystems,ramdisk,C++,Windows,Filesystems,Ramdisk,我想加快编译速度,所以我想我可以让我的文件构建在一个ramdisk上,但也可以让它自动刷新到文件系统,如果没有足够的ram,就使用文件系统 我可能需要一些类似的应用程序,我写的地方,我希望文件缓存在ram和刷新到FS。我有什么选择?这样的事情已经存在了吗?(也许是保险丝?)这个应用程序是一个玩具应用程序(现在),我需要反复编译C++代码。正如我们所知,当有一个特定的问题需要解决时,编译所需的时间就越长。我们能做的就越少。编译是CPU绑定的,而不是磁盘绑定的。如果你使用适当的构建标志来使用所有的C

我想加快编译速度,所以我想我可以让我的文件构建在一个ramdisk上,但也可以让它自动刷新到文件系统,如果没有足够的ram,就使用文件系统


我可能需要一些类似的应用程序,我写的地方,我希望文件缓存在ram和刷新到FS。我有什么选择?这样的事情已经存在了吗?(也许是保险丝?)这个应用程序是一个玩具应用程序(现在),我需要反复编译C++代码。正如我们所知,当有一个特定的问题需要解决时,编译所需的时间就越长。我们能做的就越少。

编译是CPU绑定的,而不是磁盘绑定的。如果你使用适当的构建标志来使用所有的CPU核心,你可以很容易地在典型的PC上使它们饱和。除非你有某种超级计算机,否则我认为这不会加快速度


对于VS2008,此标志为。它也存在于。

Ram磁盘与dodo的文件系统缓存一样。它可以做出比静态缓存更好的决策,了解其他程序对RAM的使用情况以及磁盘写入头的位置。惰性回写是免费的。

不确定它是否有助于回答近12年前的一个问题,但刚才我正在寻找一些软件来同步文件系统或目录,以便做到这一点。 这两个答案都是正确的,因为文件系统缓存将试图预测您需要什么,并在RAM中提供什么,而且,一般来说,构建一个软件会带来很多多线程的好处,可能会耗尽CPU。但是现在我正在使用Unity进行构建,我无法控制构建优化

也就是说,虚拟RAM磁盘具有优势,因为这些文件始终位于RAM中,不同于文件系统缓存(FSC),后者必须处理争夺磁盘访问的资源和应用程序

另一个不同之处是,当应用程序关闭文件句柄或强制同步时,FSC将尝试尽快将该文件获取到磁盘,以避免出现问题(电源故障等)。我相信您可以在Linux上改变FSC的行为。 与RAM磁盘同步不会写入磁盘,这可能是您在评论中提到的性能差异的原因


也就是说,我仍然需要寻找一些东西来自动同步我的两个文件系统

你是说windows会缓存我的文件,这样我就不需要实现它了?一般来说,这是真的吗?还是编写软件的开发人员必须做些什么来告诉windows它应该使用文件系统缓存?换句话说,当我简单的C代码写入大文件时,它会从系统缓存中受益吗?如果是这样的话,为什么我在写RAMDISK时会看到一个显著的加速?(注意,我使用OpenCV一次一帧地写出大型视频文件)。