• lJ
    2024-12-18 来自江苏
    1. 使用标准库的 encoding/json 编解码性能较低,推荐使用github.com/json-iterator/go。 2. 使用 io.Reader 和 io.Writer 进行流式传输,io.Copy 方法是一个高效实现的拷贝工具,可以在两个流之间传输数据。比如,如果 src 实现了 WriterTo 接口(如 TCPConn),会直接调用 src.WriteTo(dst)。这避免了 io.Copy 手动分配缓冲区并循环读取/写入的过程,将高效传输的责任交给底层类型的实现。优先尝试调用内核的 splice 系统调用,避免数据从内核空间拷贝到用户空间再拷贝回内核空间的开销。如果 spliceTo 无法处理,则回退到通用的拷贝逻辑 genericWriteTo。

    作者回复: 👍👍,第一个高性能json处理,可以试下字节开源的sonic库https://github.com/bytedance/sonic,我们有个场景,把json-iterator换成sonic做list循环反序列化,接口延时从21ms降到了17ms

    共 2 条评论
    
  • jxs1211
    2024-12-19 来自重庆
    这种写法可以吗,benchmark测下来感觉差不多 func Str2Bytes(s string) []byte { return *(*[]byte)(unsafe.Pointer(&s)) }
    
    