gpt4 book ai didi

c++ - 文件 I/O 与 TCP 套接字,同一机器内数据传输哪个更快?

转载 作者:行者123 更新时间:2023-12-03 08:29:53 25 4
gpt4 key购买 nike

我有大约 10MB 的数据要从服务器程序发送到客户端程序,这两个程序都在同一硬盘驱动器中运行。

服务器端是用C++编写的,客户端是用python编写的。

我已经创建了一个架构,其中服务器将数据写入临时二进制文件,然后通过 TCP 将文件的名称发送到客户端,让客户端知道数据已写入文件并且现在已写入准备好被检索。然后Python客户端从这些文件中检索数据。

这比我预期的要慢。我想知道如果我直接通过 TCP 将数据(二进制格式,而不是字符串)发送到客户端而不是写入/读取文件,是否会更快并使用更少的内存?

最佳答案

假设您的软件被编写为有效使用 TCP,TCP 会更快,因为在 TCP 传输期间,数据永远不需要发送到硬盘驱动器然后再返回。相反,它会一直保留在 RAM 中,并且 RAM 比旋转磁盘或固态磁盘快得多。

通过 TCP 发送数据还允许您的两个程序并行运行,即您的消费者程序甚至可以在生产者程序完成生成数据之前开始消费数据。这可以提供一些额外的加速(与读者在编写者完成写入文件之前无法安全地读取文件的方法相比)

如果您认为您不想通过实际网络(即您的两个程序将始终在同一主机上运行),那么您可能会考虑使用 pipe而不是 TCP 套接字,因为它比 TCP 效率稍高。 (不过,TCP 套接字也可以正常工作)。

(顺便说一句,避免将临时文件写入磁盘方法的另一个原因是,您不必担心磁盘已满或只读或者您的程序不这样做该怎么办有权限写入它想要写入的文件夹)

关于c++ - 文件 I/O 与 TCP 套接字,同一机器内数据传输哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65444777/

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