如何测量巨大 svg 的渲染时间?

Posted

技术标签:

【中文标题】如何测量巨大 svg 的渲染时间?【英文标题】:How can I measure rendering time of huge svg? 【发布时间】:2022-01-21 18:52:24 【问题描述】:

我想弄清楚如何测量 SVG 的渲染时间。 当我对 SVG 元素进行更改(例如放大或缩小)时,需要几秒钟才能生效,因为 SVG 很大。 而且我需要测量更新所花费的时间以进行性能分析。 我尝试了几个 DOM 事件,例如 DOMContentLoaded DOMNodeInserted DOMNodeSubtreeModified,但所有这些事件都是在更改的 SVG 呈现在屏幕上之前触发的。

我也尝试过PerformanceTimingAPIPerformanceElementTimingAPI,但没有成功。

提前致谢!

【问题讨论】:

"我也尝试过 PerformanceTimingAPI 和 PerformanceElementTimingAPI,但没有成功。" - 告诉我们!好吧,真的,向我们展示你自己解决这个问题的任何尝试。然后我们可以帮助您调试它。 如果 svg 太大以至于您所做的任何更改“需要几秒钟才能生效”,您可能需要考虑替代解决方案。您可能会发现this article by Sara Soueidan 很有用。 【参考方案1】:

还有MutationObserver,但如果你已经遇到了 JS 事件的问题,说 DOM 发生了变化,但是你没有看到浏览器引擎重新渲染,那么你可能无法使用 JS对此进行衡量,可能需要使用更“手动”的方法。

尝试使用 Chrome DevTools 的 Performance recording 功能。如果启用屏幕截图,您应该能够看到渲染何时生效。将其与performance.mark() 结合使用,您应该能够看到触发 DOM 突变的时间,以及屏幕截图实际更新的时间。

【讨论】:

以上是关于如何测量巨大 svg 的渲染时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何测量浏览器中的 CSS 解析和渲染时间?

如何动态导入 SVG 并内联渲染

如何在 .NET 环境中打开和渲染 SVG 文件?

如何使用 start 和 endAngle 渲染 svg 圆

如何从 Web 服务动态导入 SVG 并内联渲染

如何在 Python 中将 SVG 图像渲染为 PNG 文件?