2

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

对于我正在编写的应用程序,我可能需要类似的东西,我希望将文件缓存在 ram 中并刷新到 FS 中。我有哪些选择?有没有这样的东西已经存在?(也许是保险丝?)该应用程序是一个玩具应用程序(目前),我需要反复编译 C++ 代码。众所周知,当有特定问题需要解决才能继续进行时,编译所需的时间越长。我们能做的越少。

4

3 回答 3

2

Ram-disks 在文件系统缓存中采用了渡渡鸟的方式。它可以做出比静态缓存更好的决策,它可以了解其他程序的 RAM 使用情况以及磁盘写入头的位置。懒惰的回写是免费的。

于 2009-02-26T18:32:10.863 回答
1

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

对于 VS2008,这个标志是/MP. 它也存在于VS2005上。

于 2009-02-26T02:46:22.743 回答
1

不确定它是否有助于回答大约 12 年前的问题,但刚才我正在寻找一些软件来同步文件系统或目录来做到这一点。这两个答案都是正确的,因为文件系统缓存将尝试预测您需要什么并在 RAM 中可用,并且通常构建软件有利于多线程,可能会最大化您的 CPU。但是现在我正在使用 Unity 进行构建,并且无法控制构建优化。

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

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

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

于 2021-01-20T19:08:16.943 回答