Lila25mila
Lila25milaҚаң. 21, 2019, 6:48 Т.Ж.

Qt 5.12 LTS – QML қолданбаларын жылдамырақ іске қосу жолы

Компания Qt уже давно использует такие тесты, как QMLBench, которые помогают нам узнать, когда изменение вызывает снижение производительности, но также важно видеть, как Qt работает на более высоком уровне, позволяя компонентам взаимодействовать таким образом, чего детальные тесты, такие как QMLBench не могут нам показать этого. В этой статье мы рассмотрим результаты тестирования запуска нового приложения из более реального приложения для тестирования QML.


Бенчмарк

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

Тестовое приложение. Оно объединяет текстуры, анимацию, формы QML, повторители, сложный текст, эффекты частиц и шейдеры GL для имитации более тяжелого, более реального приложения, чем другие тесты QML, такие как QMLBench.

Тестовое приложение. Оно объединяет текстуры, анимацию, формы QML, повторители, сложный текст, эффекты частиц и шейдеры GL для имитации более тяжелого, более реального приложения, чем другие тесты QML, такие как QMLBench.

Загрузить исходный код можно по ссылке.

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

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

Диаграмма выше показывает, как возможности Qt 5.12 LTS действительно снижаeт производительность запуска, уменьшая время до первого кадра с 5912 мс в Qt 5.6 до всего 1258 мс в Qt 5.12.0, что на 79% меньше! Это благодаря ряду новых функций, которые можно объединить для повышения производительности при запуске. Давайте пройдемся по каждому.

Диаграмма выше показывает, как возможности Qt 5.12 LTS действительно снижаeт производительность запуска, уменьшая время до первого кадра с 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 хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
AD

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

  • Нәтиже:50ұпай,
  • Бағалау ұпайлары-4
m
  • molni99
  • Қаз. 26, 2024, 1:37 Т.Ж.

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

  • Нәтиже:80ұпай,
  • Бағалау ұпайлары4
m
  • molni99
  • Қаз. 26, 2024, 1:29 Т.Ж.

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

  • Нәтиже:20ұпай,
  • Бағалау ұпайлары-10
Соңғы пікірлер
ИМ
Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Енді форумда талқылаңыз
m
moogoҚар. 22, 2024, 7:17 Т.Ж.
Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProjectМаусым 4, 2022, 3:49 Т.Ж.
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

Бізді әлеуметтік желілерде бақылаңыз