SWD Software Ltd. - официальный дистрибьютор QNX на территории России и стран бывшего СССР Операционная система реального времени QNX
Инструменты для создания надёжных встраиваемых систем и
интеллектуальных устройств любой сложности
QNX Software Systems - разработчик встраиваемой операционной системы QNX
Продукты QNX
Операционная система реального времени QNX Neutrino
Операционная система реального времени QNX4
Комплект разработчика QNX Momentics
Встраиваемые СУБД
Аппаратное обеспечение
Главная страница > Продукты > Продукты QNX > Комплект разработчика QNX Momentics > Средства оптимизации производительности Сделать страницу стартовой Послать ссылку коллеге Версия для печати

Средства оптимизации производительности

Инструменты оптимизации производительности позволяют получить максимально наглядное отображение работы системы, не нарушая её целостность. профессиональный комплект разработчика qnx momentics содержит целый ряд инструментов для визуального, неагрессивного анализа системной производительности.

Профайлер приложений

С помощью профайлера приложений вы можете быстро обнаруживать чрезмерно интенсивно используемые секции кода и применять к ним отладку, анализ производительности и оптимизацию. Например, профайлер приложений позволяет выполнять следующие задачи:

  • в реальном времени собирать информацию, подключив профайлер к программе, выполняющейся на целевой системе;
  • на уровне исходного текста выявлять строки, потребляющие наибольшие процессорные ресурсы;
  • анализировать использование процессорного времени по множеству процессов и целевых систем, а также разделяемых библиотек;
  • получать полную информацию о выполнении с помощью компилирования и запуска новой копии программы на целевой системе;
  • производить "посмертное" профилирование и анализ посредством загрузки файлов статистики в профайлер.

Статистическое профилирование для неагрессивного контроля

Сканируя выполнение программ через фиксированные временные интервалы, профайлер приложений строит точную картину того, в каких участках кода система тратит больше всего времени. Для этого не требуется специальный инструментарий, изменение кода или особый режим компиляции. Неагрессивное профилирование также гарантирует, что профайлер не исказит собираемую информацию.

Профайлер приложений предоставляет информацию об использовании процессорного времени каждым потоком и отображает её как в абсолютных значениях, так и в процентах от общего времени, после чего её можно сортировать удобным образом. Профайлер приложений также позволяет начать процесс профилирования заново без перезапуска самого приложения. В итоге вы можете сравнить результаты для одного и того же приложения при различной нагрузке. Более того, профайлер может анализировать динамически загружаемые разделяемые библиотеки, что позволяет определить, где кроется причина снижения производительности – в коде приложения или в вызываемой им библиотеке.

Профайлер приложений

Профайлер приложений

Профайлер приложений позволяет анализировать использование процессорных ресурсов множеством процессов и разделяемых библиотек на различных целевых системах. Профилирование может быть как "посмертным", так и в реальном времени.

Внедрение диагностических тегов для точных измерений

Чтобы получить дополнительную информацию о выполнении кода, вы можете указать компилятору внедрить в результирующий код диагностические теги для профилирования. Код с диагностическими тегами будет выдавать информацию о вызовах функций и о парах вызовов (т. е. откуда и куда был вызов). С помощью информации о вызовах и статистики выполнения вы можете локализовать "узкие места", а затем перейти к визуальной диаграмме вызовов, чтобы определить место функции в цепочке вызовов. Это весьма удобный способ поиска фрагментов кода, требующих оптимизации.

Выявление неэффективных фрагментов с точностью до строки исходного текста

Для оптимизации производительности часто недостаточно знать, какие именно функции потребляют наибольшее процессорное время. Чтобы получить более детальные сведения, профайлер приложений может спуститься до уровня исходного текста и показать, какие именно строки исходного текста потребляют наибольший процессорный ресурс. Это происходит с помощью графического аннотирования исходного текста в редакторе кода на C/C++ и отображения потребляемой доли процессорного времени – как для отдельных функций, так и для отдельных строчек кода. Вы можете визуально сравнить эффективность различных стратегий оптимизации, выявить неэффективные алгоритмы и сосредоточиться на оптимизации нужных фрагментов кода, просто просматривая исходный текст.

Анализатор озу

Анализатор ОЗУ помогает визуально отобразить использование памяти вашими программами и может быстро выявлять переполнения буферов, некорректные освобождения памяти и множество других типовых ошибочных ситуаций. Анализатор ОЗУ позволяет получить:

  • информацию на уровне процесса, с помощью которой можно быстро оценить карту памяти программы; закрашенные области представляют собой стек, код, библиотеки и "кучу";

  • специализированную статистику распределения памяти для выявления возможных проблем утечки памяти; статистика содержит суммарное количество свободных, распределённых и используемых байтов и блоков;

  • динамический журнал использования памяти для оценки изменений.

Выявление ошибок распределения памяти при помощи штатной библиотеки

Комплект разработчика QNX Momentics содержит библиотеку распределения памяти, в которой реализовано большинство типовых операций над строками и памятью. Эти функции перед выполнением операции проверяют корректность использования указанной области памяти, позволяя выявлять ошибки переполнения, выборки из пустого буфера, некорректного использования памяти и повторного освобождения одной и той же области.

Анализатор ОЗУ

Анализатор ОЗУ

Анализатор ОЗУ позволяет быстро обнаруживать типовые ошибочные ситуации, включая переполнения буферов, выборки из пустого буфера и некорректные освобождения памяти.

Выбирайте наиболее подходящий способ обработки ошибок

В среду разработки QNX Momentics встроен "интеллектуальный" механизм отслеживания ошибок работы с памятью. При возникновении ошибки, соответствующий фрагмент исходного текста автоматически помечается предупреждением. В этом случае вы сможете:

  • продолжить выполнение программы;
  • завершить программу и сохранить её образ в дамп-файле;
  • остановить программу и сразу переключиться в отладчик, где в вашем распоряжении будут все необходимые средства для локализации проблемы.

Системный профайлер

С помощью системного профайлера вы можете разрешать конфликты синхронизации, обнаруживать ситуации взаимных блокировок, выявлять корни семантических ошибок, находить скрытые неполадки в программном и аппаратном обеспечении и оптимизировать производительность вашего приложения, причём как для однопроцессорных, так и для многопроцессорных целевых систем.

Системный профайлер позволяет выполнять следующие задачи:

  • получать визуальное отображение взаимодействий между компонентами целевой системы, извлекая данные из отладочной версии микроядра;
  • определять момент возникновения события, связанные с ним программные модули и действия, выполненные ими, а также интерпретировать возникшее событие;
  • получать информацию о событиях на целевой системе, применять динамические фильтры событий, а также получать визуальное отображение и интерпретацию данных о процессорной активности и статистики по событиям.

Визуальное наблюдение событий для быстрого выявления проблем

Системный профайлер может отображать огромные объёмы информации, включая информацию о вызовах ядра, аппаратных прерываниях, состоянии потоков, обмене сообщениями и событиях планировщика. Кроме этого, он даёт вам чёткий контроль над тем, какие события записывать и когда, чтобы вы могли сосредоточиться именно на том, что вам нужно. Он также позволяет применять фильтры событий и различные опции отображения, чтобы детально анализировать подозрительные фрагменты кода и легко прослеживать сложные взаимодействия.

Собственные фильтры событий

Если штатные фильтры событий, предоставляемые отладочной версией микроядра, не соответствуют ситуации, которую вы хотели бы проанализировать, это не проблема: ядро поддерживает систему динамических фильтров, определяемых пользователем, чтобы эффективно отслеживать сложные комбинации условий. Таким образом, вы можете сосредоточиться на отдельных событиях и уменьшить объём данных, выводимых для анализа.

Системный профайлер

Системный профайлер

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

Рассказать друзьям:

     Рейтинг@Mail.ru