#6500·fyne

perf(test): 支持在 test.Canvas.Capture() 中使用可重用的图像缓冲区,以减少测试套件中的堆内存变化

作者: hazyhaar创建于 2026年8月24日更新于 2026年9月6日
  • 核对表
  • 我搜索了问题追踪器,以了解与同一特性有关的未决问题,然后开启新的问题。
  • 这个问题只涉及一个单一特点。 我将提出其他问题。

您的特性请求与问题有关吗 ?

fyne.io/fyne/v2/test'中,称为Canvas'。 抓取() 分配一个新的“ 图像 ” 。 NewNRGBA关于每一项援引:

  • 对于标准的1280x800无头窗口,每个抓取分配QQ4.10 MB**堆积内存.
  • 在自动测试套间中,执行连续的视觉检查,帧遥测,或回归回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回(例如:100帧),这回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回

• 能否用现有的API构建一个解决方案?

现在,'测试. Canvas。 抓取()返回新分配的“图像”。 图像 ` 不显示写入现有或集合缓冲器的选项。

说说你想看的解决方案

添加非破解辅助器方法或允许缓冲再利用,例如:

  • 添加“CaptureTo(dst *image.NRGBA)”(或“CaptureTo(dst drawtion)”。 图片)在"测试"上. 无窗 Canvas " / " 测试。 罐头可以让试验跑道和用具重复使用预先分配的相框。
  • 酌情利用内部缓冲池(`sync.Pool')进行软件渲染。

** 基准比较(1280x800 Canvas Captains):**

  • 当前`c.Capture()':4,101,144 B/op,304 alocs/op(~5.13 ms/op)。
  • 可重复使用的缓冲/零-负载道:0 B/op,0 alogs/op(~2.27 ms/op,~2.2x加速).