gpt4 book ai didi

windows - 在 Windows 中通过常规文件传输 1-2 兆字节的数据 - 它比通过 RAM 慢吗?

转载 作者:可可西里 更新时间:2023-11-01 11:18:51 26 4
gpt4 key购买 nike

我使用一个普通的旧文件将 1-2 MB 的数据从一个进程传递到另一个进程。它比完全通过 RAM 慢得多吗?

在回答是之前,请记住,至少在现代 Linux 中,当写入文件时,它实际上是写入 RAM,然后守护进程不时将数据同步到磁盘。因此,如果进程 A 将 1-2 MB 写入文件,然后进程 B 在 1-2 秒内读取它们,进程 B 将只读取缓存内存。它甚至比这更好,因为在 Linux 中,在将新文件写入硬盘之前有几秒钟的宽限期,因此如果文件被删除,它根本不会写入硬盘。这使得通过文件传递数据与通过 RAM 传递数据一样快。

Linux 是这样,Windows 也是这样吗?

编辑:只是为了提出一些假设:

  1. 操作系统相当新 - 适用于台式机的 Windows XP 或更新版本,适用于服务器的 Windows Server 2003 或更新版本。
  2. 文件明显小于可用 RAM - 比方说不到可用 RAM 的 1%。
  3. 文件在写入后几秒钟被读取和删除。

最佳答案

当您读取或写入文件时,Windows 通常会将部分或全部文件保留在内存中(在备用列表中)。因此,如果再次需要它,将其映射到进程的内存空间只是一个软页面错误。

文件的哪些页面将被保留(以及多长时间)的算法没有公开记录。所以简短的回答是,如果你幸运的话,其中的一些或全部可能还在内存中。您可以使用 SysInternals 工具 VMmap在测试期间查看您的文件的哪些内容仍在内存中。

如果您想增加数据保留驻留的机会,那么您应该使用 Memory Mapped Files在两个进程之间传递数据。

有关 Windows 内存管理的好读物: Mysteries of Windows Memory Management Revealed

关于windows - 在 Windows 中通过常规文件传输 1-2 兆字节的数据 - 它比通过 RAM 慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22099843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com