Lila25mila
Lila25mila21 січня 2019 р. 06:48

Qt 5.12 LTS - шлях до швидшого запуску додатків QML

*Компанія Qt вже давно використовує такі тести, як QMLBench, які допомагають нам дізнатися, коли зміна викликає зниження продуктивності, але також важливо бачити, як Qt працює на вищому рівні, дозволяючи компонентам взаємодіяти таким чином, чого детальні тести, такі як QMLBench не можуть нам показати це. У цій статті ми розглянемо результати тестування запуску нової програми з більш реальної програми для тестування QML.


Контроль

Для цих тестів було розроблено відносно простий додаток QML, який використовує безліч об'єктів QtDeclarative та QtGraphicalEffects. Код програми був написаний, тому що його написав звичайний розробник без оптимізації запуску, споживання пам'яті або продуктивності. Оскільки ми проводимо порівняльний аналіз, то програма не використовує інтерактивні елементи або введення користувача. Додаток має низьку складність, без логіки, тому результати якомога більш узгоджені між запусками тесту. Хоча жоден еталонний тест не зможе дійсно імітувати реальну продуктивність при взаємодії з користувачем, а тест, що обговорюється, спрямований на більш точне представлення реального робочого навантаження QML, ніж QMLBench або приклад «Galery» QtQuickControls.

Тестове додаток. Воно поєднує текстури, анімацію, форми QML, повторювачі, складний текст, ефекти частинок та шейдери GL для імітації важчого, більш реального застосування, ніж інші тести QML, такі як QMLBench. . jpg)

Тестовий додаток. Воно поєднує текстури, анімацію, форми QML, повторювачі, складний текст, ефекти частинок і шейдери GL для імітації важчого, реальнішого застосування, ніж інші тести QML, такі як QMLBench.

Завантажити вихідний код можна за посиланням.

Раніше Ларс писав про прихильність компанії Qt поліпшити продуктивність Qt, і з недавнім випуском Qt 5.12 LTS, зроблені зусилля дійсно показують це, особливо в QML. Серед покращень велика кількість була спрямована на покращення продуктивності запуску. З протестованих платформ найбільше поліпшення продуктивності при запуску було відзначено на пристрої, що тестується нами з низьким енергоспоживанням - Toradex Apalis i.MX6. Давайте розглянемо це.

Продуктивність при запуску

[![Діаграма вище показує, як можливості Qt 5.12 LTS дійсно знижує продуктивність запуску, зменшуючи час до першого кадру з 5912 мс у Qt 5.6 до всього 1258 мс у Qt 5.12.0, що на 79% менше! Це завдяки ряду нових функцій, які можна поєднати для підвищення продуктивності при запуску. Давайте пройдемося по кожному. ]

Діаграма вище показує, як можливості Qt 5.12 LTS дійсно знижує продуктивність запуску, зменшуючи час до першого кадру з 5912 мс у Qt 5.6 до всього 1258 мс у Qt 5.12.0, що на 79% менше! Це завдяки ряду нових функцій, які можна поєднати для підвищення продуктивності при запуску. Давайте пройдемося по кожному.

  • Шейдерний кеш впроваджений у Qt 5.9 LTS

    Кеш шейдерів зберігає скомпіловані шейдери OpenGL на диск, завдяки чому можна уникнути перекомпіляції шейдерів GL при кожному виконанні.

Плюси: зменшує час запуску та дозволяє уникнути затримки програми при виявленні нового шейдера, якщо шейдер вже знаходиться в кеші.

Мінус: Системи з невеликим сховищем можуть іноді очищати кеш шейдерів. Якщо ваша програма використовує дуже складні шейдери і працює на малопотужному пристрої, де компіляція шейдера може призвести до небажаного часу запуску, можлива рекомендація використовувати попередньо скомпіловані шейдери, щоб уникнути проблем із кешуванням. Немає жодної різниці у продуктивності між кешованими шейдерами та попередньо скомпільованими шейдерами.

Складності використання: ні! Цей процес є автоматичним та не вимагає виконання вручну.

  • Скомпільований QML

    Без використання швидкого компілятора Qt, детально описаного нижче, програми QML, створені на версіях Qt до 5.9 LTS, завжди компілюватимуться під час виконання при кожному запуску програми. Залежно від розміру програми та можливостей обробки хоста, ця дія може призвести до небажано довгого часу запуску. Два поліпшення Qt тепер дозволяють значно прискорити запуск складних додатків QML. Обидва забезпечують однакове підвищення продуктивності при запуску.
    Це Qt Quick Cache та попередньо згенерований QML (Qt Quick Compiler)

    Qt Quick Cache - представлений у Qt 5.9 LTS
    Qt Quick Cache зберігає скомпільований під час виконання QML на диск у тимчасовому місці, так що після першого запуску, коли компілюється QML, його можна безпосередньо завантажувати при наступних виконаннях замість виконання дорогих компіляцій щоразу.

    Плюси : може значно прискорити складні програми з великою кількістю файлів QML.

    Мінуси: якщо ваш пристрій має дуже маленький запам'ятовуючий пристрій, то операційна система може автоматично очищати кеші, що іноді призводить до несподівано довгого запуску.

    Складності використання: ні! Цей процес є автоматичним та не вимагає виконання вручну.

    Попередньо згенерований QML (Qt Quick Compiler) - Представлено в Qt 5.3 для комерційних ліцензіатів, як комерційних, так і з відкритим вихідним кодом, Qt 5.11
    Швидкий компілятор дозволяє упаковувати та використовувати попередньо скомпільовану QML програму. Спочатку доступний за комерційною ліцензією з Qt 5.3, він доступний як для комерційних користувачів, так і для користувачів з відкритим вихідним кодом, починаючи з Qt 5.11.

    Плюси: Перевага використання Quick Compiler полягає в тому, що йому не потрібно покладатися на згенерований кеш QML під час виконання, тому вам не потрібно турбуватися про несподівано довгий час запуску після того, як конкретний хост програми очистить свої тимчасові файли.

    Мінуси: ні!

    Складнощі використання: низькі. Дивіться відповідну документацію. Часто це так само просто, як додати qtquickcompiler до CONFIG у файлі .pro вашого проекту!

  • Поля відстаней (Distance Fields) - впроваджено в Qt 5.12 LTS

    Хоча Qt вже давно використовує поля відстаней при рендерингу шрифтів, щоб мати чистіші, чіткіші, анімовані шрифти, Qt 5.12 є методом попереднього обчислення полів відстаней.

    Плюси: використання попередньо згенерованих шрифтів для поля відстані може значно знизити продуктивність при запуску при використанні складних шрифтів, таких як латинські декоративні шрифти, китайський, японський або санскрит. Якщо програма використовує багато тексту, кілька шрифтів або складні шрифти, попередня генерація полів відстані може витратити величезну кількість часу на запуск.

    Мінуси: Згенеровані файли шрифтів поля відстані будуть трохи більшими на диску, ніж стандартні шрифти. Це можна оптимізувати, обравши лише ті символи, які відображатимуться у вашій програмі під час використання інструмента «Генератор полів відстаней». Не вибрані гліфи будуть розраховуватися при необхідності під час виконання.

    Складнощі використання: низькі. Дивіться відповідну документацію. Ніякого додаткового коду не потрібно, і генерація полів відстані для шрифту займає секунди.

  • Сжатые текстуры - впроваджено в Qt 5.11

    Надання OpenGL стислих текстур, готових для завантаження у відеопам'ять прямо з шлюзу, позбавляє Qt необхідності готувати файли інших типів (jpg, png і т. д.) для завантаження.

    Плюси: використання стислих текстур забезпечує швидший час запуску, зменшення використання пам'яті. Це може навіть трохи підвищити продуктивність, залежно від того, наскільки інтенсивно використовується ваша текстура і наскільки сильно ви використовуєте стиснення.

    Мінуси: Хоча алгоритми стиснення, що використовуються для текстур, за своєю природою вимагають деякого компромісу у візуальній точності, всі схеми стиснення, крім найекстремальніших, зазвичай не будуть відчувати будь-яких видимих втрат точності. Вибір правильної схеми стиснення для використання вашої програми є важливим фактором.

    Складнощі використання: низькі. Практично жодного написання коду не потрібно, потрібно лише змінити розширення файлів текстур у вашому коді qt.

Висновки

I.MX6 є відмінним представленням вбудованого обладнання середнього рівня, та покращення продуктивності, включені в Qt 5.12 LTS. Зберіть усі покращення разом, і ви дійсно зможете скоротити час запуску, необхідний для пристроїв з низьким енергоспоживанням.

З цими останніми результатами випробувань для апаратного забезпечення з низьким енергоспоживанням Qt 5.12 може допомогти вашій розробці, значно скоротивши час запуску, особливо при роботі на пристроях низького і середнього рівня. Ці нові покращення продуктивності легко впровадити, вимагаючи лише незначних змін у вашій кодовій базі, тому є дуже мало причин не відразу починати використовувати Qt 5.12, особливо якщо ваш проект втисне важкі програми QML в SoC маленького розміру. Нижче наведена таблиця є показником того, що можливо з Qt 5.12 LTS.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 01:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
m
  • molni99
  • 26 жовтня 2024 р. 01:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 11:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 08:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 07:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 11:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi
Evgenii Legotckoi24 червня 2024 р. 15:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 листопада 2024 р. 06:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject04 червня 2022 р. 03:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9Anonim25 жовтня 2024 р. 09:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Слідкуйте за нами в соціальних мережах