我是否应该期望 unix 套接字比本地环回 TCP 快 50 倍?

Should I expect unix socket to be 50x faster than local loopback TCP?

我正在开发一个使用套接字 (TCP) 交换数据的开源包。在 Linux 上,它可以使用本地 Unix 套接字或远程套接字。当我通过本地环回比较本地套接字与远程套接字的性能时,我发现 Unix 套接字要快 50 倍。其他都是一样的。

这种性能差异是否在意料之中,还是表示代码中某处存在错误?

在大多数情况下,数据交换是双向的,通常类似于单字节命令 (uint8_t),说明发生了什么,然后是一堆数据,通常约为 1kb。

如果您单独发送初始字节,您的协议几乎肯定会 运行 进入 Nagle 算法。使用缓冲,或 writev(),或 sendmsg(),一次发送所有内容。