QQuickItem 需要多长时间才能变为可见?
How Long Does It Take for a QQuickItem to Become Visible?

原始链接: https://www.kdab.com/how-long-does-it-take-for-an-item-to-become-visible/

Javier 介绍了一种测量 Qt Quick 中从触发项目可见性到其实际显示在屏幕上之间延迟的 C++ 方法。这有助于识别那些组件渲染滞后于预期的“感知”掉帧。 该方法通过子类化 `QQuickItem` 来监控 `visibleChanged` 信号。为了确保准确性并避免因无关动画引发的过早测量,该过程使用了 `ensurePolished` 来标记项目何时准备好进行渲染。通过连接到 `QQuickWindow::afterFrameEnd`,系统能够捕捉到项目被交换至显示器的精确时刻。 由于原始毫秒数可能会产生误导,该方案通过将经过的时间除以显示器的刷新率(例如 60Hz 时约为 16 毫秒)来计算掉帧数。这提供了一种标准化的性能指标。此外,作者强调在 C++ 构造函数中将项目的可见性设置为 `false`,以确保 `visibleChanged` 信号在 QML 实例化期间能够可靠地触发。这一工具为开发者提供了一种衡量 UI 响应速度并优化渲染性能的通用方法。

Hacker News 最新 | 过往 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 QQuickItem 变得可见需要多长时间?(kdab.com) 35 点,由 jandeboevrie 发布于 1 天前 | 隐藏 | 过往 | 收藏 | 1 条评论 帮助 stinos 1 天前 [–] “掉帧”是延迟的常用术语吗?对我来说,掉帧的意思完全不同。 无论如何:你可以随心所欲地为特定的渲染框架计算相关数值,那只能告诉你软件层面何时认为某物可见,你仍然会忽略掉 GPU 驱动程序或显示器本身可能增加的额外帧。 归根结底,在我看来,只有通过测量发送“显示”命令的时间,以及测量物体实际变得可见的时间(在显示器上使用光电二极管,或者使用那些能在看到特定像素值时输出 TTL 信号的昂贵显示器),才能准确测量总延迟。 回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:
相关文章

原文
联系我们 contact @ memedata.com