QML 创建文本元素需要很长时间

2024-03-17

我注意到在 QML 中创建文本元素需要很长时间。
举个例子:

import QtQuick 2.5
import QtQuick.Window 2.2

Window {
    visible: true
    width: 320
    height: 640
    color: "yellow"
    ListView {
        anchors.fill: parent
        model: 1000
        delegate: Component {
            Rectangle {
                width: parent.width
                height: 50
                color: index % 2 == 0 ? "#eee" : "#ddd"
                Text {
                    anchors.fill: parent
                    font { family: "Helvetica"; pixelSize: 15 }
                    verticalAlignment: Text.AlignVCenter
                    horizontalAlignment: Text.AlignHCenter
                    text: "9"
                }
            }
        }
    }
}

在 QML Profiler 中,结果如下:

Location        Type        Time in Percent Total Time  Calls   Mean Time   Median Time Longest Time    Shortest Time   Details
<program>                   100.00 %        730.664 ms  1       730.664 ms  730.664 ms  730.664 ms      730.664 ms      Main Program
main.qml:17     Create      82.33 %         601.544 ms  706     852.045 µs  46.227 µs   536.645 ms      7.777 µs        QtQuick/Text
main.qml:9      Create      76.37 %         557.974 ms  2       278.987 ms  557.793 ms  557.793 ms      181.747 µs      QtQuick/ListView
main.qml:4      Create      15.04 %         109.901 ms  2       54.951 ms   109.520 ms  109.520 ms      380.668 µs      QtQuick.Window/Window
main.qml:13     Create      4.90 %          35.826 ms   706     50.744 µs   14.842 µs   20.833 ms       0.438 µs        QtQuick/Rectangle
main.qml:18     Binding     0.74 %          5.397 ms    353     15.288 µs   15.704 µs   86.770 µs       4.841 µs        anchors.fill: parent
main.qml:16     Binding     0.58 %          4.224 ms    353     11.964 µs   11.686 µs   171.614 µs      4.813 µs        color: index % 2 == 0 ? "#eee" : "#ddd"
main.qml:18     JavaScript  0.40 %          2.952 ms    353     8.361 µs    8.689 µs    22.030 µs       2.597 µs        expression for fill
main.qml:16     JavaScript  0.32 %          2.351 ms    353     6.660 µs    6.289 µs    165.754 µs      2.598 µs        expression for color
main.qml:14     Binding     0.26 %          1.870 ms    354     5.282 µs    5.301 µs    31.643 µs       2.261 µs        width: parent.width
main.qml:14     JavaScript  0.19 %          1.419 ms    354     4.007 µs    4.066 µs    12.325 µs       1.591 µs        expression for width
main.qml:1      Compile     0.10 %          759.314 µs  1       759.314 µs  759.314 µs  759.314 µs      759.314 µs      main.qml
main.qml:10     Binding     0.01 %          41.470 µs   1       41.470 µs   41.470 µs   41.470 µs       41.470 µs       anchors.fill: parent
main.qml:10     JavaScript  0.00 %          22.325 µs   1       22.325 µs   22.325 µs   22.325 µs       22.325 µs       expression for fill
main.qml:12     Create      0.00 %          3.321 µs    1       3.321 µs    3.321 µs    3.321 µs        3.321 µs        <component>

正如您所看到的,创建 Text 元素需要非常长的时间。
在委托中有一些文本的另一个项目中,结果如下:

Location                Type        Time in Percent Total Time  Calls   Mean Time   Median Time Longest Time    Shortest Time   Details
PostLikeAndMark.qml:41  Create      79.20 %         1.261 s     46      27.406 ms   60.427 µs   1.257 s         7.124 µs        QtQuick/Text

有什么解决方案可以解决这个问题吗?

UPDATE
在某些情况下,这个问题似乎可能与字体系列有关。 对于最近的一个新项目,我发现使用某些字体系列会引入这个问题。 (Segue UI)
将字体系列更改为其他一些字体,例如Myriad Pro,解决了问题。


我发现,通过尽可能设置 textFormat 属性,可以实现整体性能的相关提高。 当然取决于你的实施。

得到提示:https://doc.qt.io/qt-5/qtquick-performance.html#text-elements https://doc.qt.io/qt-5/qtquick-performance.html#text-elements

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QML 创建文本元素需要很长时间 的相关文章

  • 有什么办法可以让这个 C# 代码更快吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在读取一个大文件 X12 并解析其中的信息 我有两个瓶颈功能 我似乎无法解决 read line 和 get element 有什
  • 改进绩效反思 - 我应该考虑哪些替代方案?

    我需要动态地设置对象上的一堆或属性的值 将其称为传输对象 将在短时间内创建相当数量的此类传输对象并设置其属性 我想避免使用反射 还有其他选择吗 如果是的话 有我可以查看的示例实现吗 Use Delegate CreateDelegate h
  • 如何在针对 Windows XP 的情况下使用 VS2012 构建 Qt 4/5?

    我正在尝试使用 Visual Studio 2012 构建 Qt 4 8 5 Qt 5 2 1 针对 Windows XP SDK v7 1a 使用 VS2102 编译时 源代码与 SDK v7 1a 存在各种不兼容性 因此无法开箱即用 这
  • 将2个暗淡数组“列表列表”输出到python中的文本文件

    简单的问题 我正在创建一个两个暗淡的数组 ddist 0 d for in 0 d 在下面的代码中使用列表 它使用 gis 数据输出距离 我只是想要一种简单的方法来获取数组 列表的结果并将其输出到保持相同的 N N 结构的文本文件 我过去曾
  • 为什么 Python 对于一个简单的 for 循环来说这么慢?

    我们正在做一些kNN and SVDPython 中的实现 其他人选择了 Java 我们的执行时间非常不同 我使用 cProfile 来查看我在哪里犯了错误 但一切都很好fine http wiki python org moin Pyth
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何在 Qt 应用程序中嵌入 Python 解释器?

    有没有一种简单的方法可以将 Python 解释器嵌入到 Qt 应用程序中 如果可能的话 我希望有一个跨平台的解决方案 这就是目的PythonQt http pythonqt sourceforge net 它支持 Windows Linux
  • 从 JavaScript 数组中获取对象值的最大值和最小值

    从 JavaScript 对象数组中获取最大值和最小值的最佳方法是什么 Given var a x 1 y 0 x 1 y 10 x 12 y 20 x 61 y 10 var minX Infinity maxX Infinity for
  • 慢 Eclipse Spring STS 插件

    我是 Spring 新手 安装了 Eclipse STS 插件 使用服务似乎非常慢 CPU 使用率激增 笔记本电脑只会变热 实际上风扇就像喷气发动机一样运行 直接响应服务的启动 停止 虽然下面的内容确实为我解决了 Spring STS 的所
  • isinstance(foo,types.GeneratorType)还是inspect.isgenerator(foo)?

    Python中似乎有两种方法来测试一个对象是否是生成器 import types isinstance foo types GeneratorType or import inspect inspect isgenerator foo 本着
  • 我们可以使用什么方法来重塑非常大的数据集?

    当由于非常大的数据计算将花费很长时间并且因此我们不希望它们崩溃时 事先知道要使用哪种重塑方法是很有价值的 Lately methods for reshaping data have been further developed regar
  • Qt中用于线程间通信的类设计

    问题陈述 用相机跟踪物体并相应地移动相机的方位角和仰角 Process 相机获取物体的图像 处理相机的每一帧以查找物体 应该被跟踪 并将每帧中生成的信息传递给机械设备 万向节 以平移和倾斜方式移动摄像机 Design 主 Gui 在一个线程
  • MySQL InnoDB 查询性能

    我正在尝试优化一个简单的 sql 查询 该查询将多次运行大量数据 这是场景 MySQL 与 InnoDB 表 where 和 join 中使用的所有字段都已索引 表有 FK 我不需要查询的整个缓存 但每个表的缓存是可能的 表有更多的更新 插
  • 去除字符串的最佳方法是什么?

    我需要具有最佳性能的想法来删除 过滤字符串 I have string Input view 512 3 159 删除 view 和 的最佳性能方法是什么 和引号 我可以做这个 Input Input Replace view Replac
  • 为什么 Android Eclipse 不断刷新外部文件夹并花费很长时间?

    我只有一部新的 Android 手机 我一直在修补一些基本的应用程序 每当我保存任何内容时 Eclipse 的 Android 插件就会刷新外部文件夹 这让我抓狂 通常我不会介意 但当需要 10 秒才能刷新时 我开始注意到 我已经搜索过 其
  • 如何找到 IIS 在负载/性能测试期间模拟的平均并发用户数?

    我正在使用 JMeter 进行负载测试 我正在练习通过简单地增加我的分布式 JMeter 测试用例中的线程数并启动测试来查找我们的网络服务器可以处理的最大并发线程 用户 数量 然后 我突然意识到 虽然 MAX 数字可能有用 但REAL我的网
  • 嵌套辅助函数和性能

    嵌套辅助函数对于使代码更易于理解非常有用 谷歌甚至建议在他们的应用程序中使用嵌套函数时尚指南 https google styleguide googlecode com svn trunk javascriptguide xml Nest
  • 比较运算符性能 <= 与 !=

    让我们首先声明代码可读性胜过微优化 我们应该将其留给编译器 这只是一个奇怪的案例 具体细节似乎与一般建议相比很有趣 因此 我在搞素数生成器函数 并提出了一种奇怪的行为 其中 人们建议效率最高 实际上效率最低 而 C private stat
  • 如何在文本集中创建所有字符组合?

    例如 我有这样的文本集 第 1 栏 a b 第 2 栏 l m n 第 3 栏 v w x y 我想将它们组合起来以获得如下输出 alv alw alx aly amv amw amx amy 这将输出 24 种文本组合 如果我只使用前两列
  • jqgrid长文本换行

    在jqgrid中 我们从数据库获取长文本 但在JQgrid中显示时需要换行 有什么方法可以换行长文本 没有任何空格 我们只有 110px 的空间用于收款人姓名字段 因为我们有多个列需要显示 我们的代码就像 name firstPayeeNa

随机推荐

  • 如何使用 PyYAML 创建当前本地日期和时间

    我希望能够创建一个日期时间对象datetime datetime now PyYAML 调用一些函数很容易 gt gt gt y YAML description Something ts python object apply time
  • iOS 如何从 UISlider 中删除发光/阴影

    如何去除此 UISlider 中的发光 阴影 事实证明 我所需要做的就是设置一个自定义拇指图像 并且阴影不存在
  • 重载 istream 运算符>> C++

    假设我有一个字符向量 我将它作为字符串而不是字符向量推入流中 我如何使用运算符 gt gt 取回字符向量 class C private vector
  • 在 Rails 中提供静态 JSON 对象文件

    如何从 Rails 中的文件提供静态 JSON 对象 我想在ajax调用中访问它 最好的方法是什么 只需将要渲染的内容放入变量中 然后使用render json gt variable列表 字典等都有合理的默认值 看看这个 http gui
  • Spring 相当于 Guice 中的 FactoryModuleBuilder、@AssistedInject 和 @Assisted 的什么?

    是什么Spring框架 http projects spring io spring framework 相当于FactoryModuleBuilder http google github io guice api docs latest
  • Sql Server 死锁对象 ID 太大

    我试图追踪 SQL 2005 数据库 64 位 中发生的死锁 我们目前没有启用快照隔离 我打开 tf 1204 并收到以下输出 从这个输出中 我可以确定节点 1 是一个存储过程 它选择数据并且仅修改 temp 表中的值 节点 2 是另一个存
  • 在运行时更改标记图标

    有没有办法在运行时更改 Google Maps Android API v2 标记的图标 而无需删除 重新添加我想要更改其图标的标记 我可以对其应用变换 如旋转 吗 Thanks 更新后 我可以在运行时轻松更改标记图标Google Play
  • 如何使 TensorFlow 在具有 2.x 功能的 GPU 上运行?

    我已在 Linux Ubuntu 16 04 上成功安装了tensorflow GPU 并进行了一些小的更改 以使其能够与新的 Ubuntu LTS 版本配合使用 然而 我认为 谁知道为什么 我的 GPU 满足计算能力大于 3 5 的最低要
  • Grails 2.4.2 - 动态引用默认数据源

    这个问题已经部分回答了here https stackoverflow com a 10537001 2315900但动态引用默认数据源仍然存在问题 我正在开发一个内部应用程序 它允许开发人员修改我们的多租户应用程序之一的配置设置 并将这些
  • 阻止 IP 地址访问 Heroku 上的 Flask 应用程序?

    我需要在我的网站上阻止一个 IP 地址 在 Heroku 上运行 Flask 应用程序 我看到我的服务器每秒有 50 个请求 这绝对不应该发生 我熟悉在 Apache 服务器上使用 htaccess 这里有类似的东西吗 Gunicorn 服
  • 在 std 命名空间中定义的好友类:有任何保证吗?

    我回答的时候就出现了这个问题这个问题 https stackoverflow com questions 15193108 c unique ptr versus friend class private destructor 151931
  • 在 R 中生成 XML 文档

    在我正在工作的项目中 我需要自动创建一个XML文档取决于用户输入 使用用户输入来修改的部分xml文件对我来说没问题 但我是新创建的xml在 R 中从头开始文档 我想知道是否XML可以使用 R 在 R 中生成如下所示的文档XML or xml
  • JTextField/JTextComponent 中的选择有限?

    考虑一个 JFormattedTextField 或者任何 JTextComponent 实际上 其中在字段的实际 文本 周围显示有一个前缀和一个后缀 例如 双 3 5 将是字符串 通过格式化 3 50 其周围将是前缀 和后缀 用于显示文本
  • 如何使用 html 属性在 MVC 视图中显示文本

    我有以下代码 Html ActionLink Hello User Identity GetUserName Manage Account routeValues null htmlAttributes new title Manage 我
  • 交叉编译到嵌入式 Linux ARM 设备时,针对较旧版本的 libstdc++ 和最新的 GCC

    我们需要为ARM嵌入式linux目标找到一个满足以下条件的交叉编译工具链 内核3 17 GLBC 2 18 编译一些第三方代码需要最新版本的GCC 这些要求促使我使用 crosstool ng 生成自定义交叉编译工具链 我选择了最小内核版本
  • 如何在eclipse中获取平台插件的日志

    我是 eclipse 插件开发的新手 我想在我的插件中自定义一些 Eclipse 功能 所以我想知道 当我在 eclipse 中进行某些操作时 后台会发生什么 例如 文件 gt 新建 gt 项目 我需要调用哪个插件 类 函数的日志 跟踪 您
  • 如何在 IntelliJ 上的 Java12 中使用 JavaFX?

    当我在 jdk12 中创建 JavaFX 文件时 它显示以下错误 未配置 JavaFX 运行时 使用内置 JavaFX 的 JDK 或将 JavaFX 库添加到类路径 我该如何解决这个问题 从 JDK11 开始 JavaFX 已被删除 ht
  • Amazon SNS 移动推送 - 如何批量订阅某个主题的终端节点?

    我正在尝试将现有的 iOS 推送通知基础设施转移到亚马逊 SNS 移动推送 我将所有令牌从本地数据库导出到 SNS 应用程序 使用 CSV 现在我想向所有 10 000 个用户发送推送通知 我认为唯一的方法是创建一个主题并将所有用户订阅该主
  • 如何向帖子收到评论的用户发送通知?

    使用我当前的代码 发表评论的用户会收到一条通知 告诉他们他们发表了评论 发布受到评论的评估的人应该收到通知 通知他们有人对此发表了评论 标准通知内容 但我哪里出错了 评论 rb class Comment lt ActiveRecord B
  • QML 创建文本元素需要很长时间

    我注意到在 QML 中创建文本元素需要很长时间 举个例子 import QtQuick 2 5 import QtQuick Window 2 2 Window visible true width 320 height 640 color