Res*_*ace 2 c++ sockets io tcp file
我有大约 10MB 的数据要从服务器程序发送到客户端程序,这两个程序都在同一硬盘驱动器中运行。
服务器端是用C++编写的,客户端是用python编写的。
我已经创建了一个架构,其中服务器将数据写入临时二进制文件,然后通过 TCP 将文件的名称发送到客户端,让客户端知道数据已写入文件并且现在可以使用检索到。然后Python客户端从这些文件中检索数据。
这比我预期的要慢。我想知道如果我只是通过 TCP 直接将数据(以二进制格式,而不是字符串)发送到客户端而不是写入/读取文件,是否会更快并使用更少的内存?
假设您的软件被编写为有效使用 TCP,TCP 会更快,因为在 TCP 传输期间,数据永远不需要发送到硬盘驱动器然后再返回。相反,它会一直保留在 RAM 中,并且 RAM 比旋转磁盘或固态磁盘快得多。
通过 TCP 发送数据还允许您的两个程序并行运行,即您的消费者程序甚至可以在生产者程序完成生成数据之前开始使用数据。这可以提供一些额外的加速(与读者在编写者完成写入文件之前无法安全地读取文件的方法相比)
如果您认为您不想通过实际网络(即您的两个程序将始终在同一主机上运行),那么您可能会考虑使用管道而不是 TCP 套接字,因为它会稍微比 TCP 更高效。(不过,TCP 套接字也可以正常工作)。
(顺便说一句,避免将临时文件写入磁盘方法的另一个原因是,您不必担心磁盘已满或只读或者您的程序无权执行什么操作写入要写入的文件夹)
| 归档时间: |
|
| 查看次数: |
1736 次 |
| 最近记录: |