Go 支持 Scatter-Gather IO 操作
Go support for Scatter-Gather IO operations
我想在 Go 中开发基于 Unix Domain Sockets 的高性能客户端-服务器通信协议。具体来说,我正在考虑采用 Vector-IO 操作(writev/readv 系统调用)以避免结构化数据序列化的开销。但是,我认为 Go 并不完全支持使用 scatter-gather io 操作。我发现了一些为 writev 操作提供 Go 支持但不支持 readv 的尝试。有没有办法在 Go 中实现这个 and/or 替代方案在性能方面有什么优势?
使用 net.Buffers 使用 writev
或类似的优化批量写入。
对于读取,将数据 slurp 到单个缓冲区中,并根据需要 slice 缓冲区。
我想在 Go 中开发基于 Unix Domain Sockets 的高性能客户端-服务器通信协议。具体来说,我正在考虑采用 Vector-IO 操作(writev/readv 系统调用)以避免结构化数据序列化的开销。但是,我认为 Go 并不完全支持使用 scatter-gather io 操作。我发现了一些为 writev 操作提供 Go 支持但不支持 readv 的尝试。有没有办法在 Go 中实现这个 and/or 替代方案在性能方面有什么优势?
使用 net.Buffers 使用 writev
或类似的优化批量写入。
对于读取,将数据 slurp 到单个缓冲区中,并根据需要 slice 缓冲区。