我正在开发一个使用套接字(TCP)交换数据的开源软件包。在Linux上,它可以使用本地Unix套接字或远程套接字。当我将本地套接字的性能与远程本地环回进行比较时,我发现Unix套接字的速度提高了50倍。其他一切都是一样的。
这种性能差异是预期的,还是表示代码中某处出现错误?
在大多数情况下,数据交换是双向的,通常类似于一个字节的命令(uint8_t
),说明发生了什么,然后是一堆数据,通常大约1kb。
答案 0 :(得分:0)
如果您单独发送初始字节,您的协议几乎肯定会遇到Nagle算法。使用缓冲或writev()
或sendmsg()
一次性发送。