我想在 Go 中开发基于 Unix 域套接字的高性能客户端-服务器通信协议(protocol)。具体来说,我正在考虑采用 Vector-IO 操作(writev/readv 系统调用)以避免结构化数据序列化的开销。但是,我认为 Go 并不完全支持使用 scatter-gather io 操作。我发现了一些为 writev 操作提供 Go 支持但不支持 readv 的尝试。有没有一种方法可以在 Go 中实现它和/或在性能方面有什么替代方案?
最佳答案
使用net.Buffers使用 writev
或类似的优化批量写入。
对于读取,将数据放入单个缓冲区和 slice根据需要缓冲。
关于Go 支持 Scatter-Gather IO 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57252423/