Hasty Briefsbeta

双语

Too Much Go Misdirection

a year ago
  • #io.Reader
  • #Performance
  • #Go
  • Go语言的io.Reader接口通常用于流式数据传输,但有时需要直接访问字节数据
  • 作者发现当需要直接从io.Reader获取字节数据时效率低下,尤其是使用libavif和libheif这类库时
  • 尝试通过类型断言和unsafe.Pointer直接访问bytes.Reader中的字节数据作为解决方案
  • image.Decode函数会将没有Peek方法的读取器包装成bufio.Reader,使问题复杂化
  • 进一步的解决方案涉及解包bufio.Reader以访问底层的bytes.Reader
  • 作者批评Go语言的结构化类型和标准库实践形成了未文档化的'影子API'
  • 作者反思了Go语言这类设计选择带来的更广泛影响