我注意到在 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(使用前将#替换为@)