Руководство по инструменту: Анализ производительности выполнения с помощью инструментов Rational PurifyPlus (Windows и UNIX)
В этой памятке по инструменту содержится описание применения инструментов Rational PurifyPlus для создания кода, свободного от ошибок памяти и утечек, эффективно использующего память и предоставляющего оптимальную производительность.
Инструмент: Rational PurifyPlus
Взаимосвязи
Основное описание

Данная памятка по инструментам подходит как для Microsoft Windows, так и для UNIX.

Инструменты PurifyPlus содержат Rational Purify, Rational PureCoverage и Rational Quantify.

значок книгиДля получения дополнительных сведений об инструментах PurifyPlus обратитесь к руководству Начало работы по PurifyPlus (для версии под Windows или UNIX).

значок справочникаПошаговая информация о применении инструментов PurifyPlus приведены в электронной справке по инструменту.

Анализ быстродействия выполнения 

Анализ быстродействия выполнения включает в себя следующие моменты:

  • Обнаружение ошибок памяти и утечек (программы C/C++ для Windows и UNIX).
    • С помощью Purify можно обнаружить эти неполадки, как в вашем собственном коде, так и в компонентах, используемых вашим ПО, даже при отсутствии источника.
    • С помощью PureCoverage можно обеспечить прогон всего кода. (Также PureCoverage можно использовать независимо от Purify для сбора данных о прогоне для кода, управляемого C/C++, Java и .NET).
  • Использование профилирования памяти (код, управляемый Java и .NET в Windows). С помощью Purify можно найти примеры неэффективного использования памяти.
  • Профилирование быстродействия (Windows и UNIX). С помощью Quantify можно найти места, на которые программа тратит больше всего времени и устранить основные узкие места быстродействия.

Анализ выполнения с помощью инструментов PurifyPlus позволяет получить свободный от ошибок код, выполняемый максимально эффективно.

Этапы работы с инструментами

Для использования анализа выполнения с помощью инструментов PurifyPlus выполните следующие шаги:

1. Выполните программу в Purify для сбора ошибок, утечек и данных о прогоне кода (программы C/C++ для Windows и UNIX) 

Purify обнаружит скрытые ошибки выполнения, включая утечку памяти, в вашем коде и в компонентах, используемых вашим ПО. Будет подготовлен отчет о таких ошибках, как сбои границ массивов, доступ через зависшие указатели, чтение памяти без инициализации, ошибки выделения памяти, утечки памяти, после чего вы сможете устранить ошибки прежде, чем они нанесут ущерб. При наличии в системе Rational PureCoverage вы сможете также просматривать проверенные и нет фрагменты кода.  

Начните с запуска программы в Purify:

  • В системе Windows:
    • При работе в Microsoft Visual Studio 6 вначале выберите в Visual Studio пункт меню Purify > Запустить интеграцию Purify. При наличии в системе PureCoverage выберите Purify > Собрать данные о прогоне чтобы указать Purify на необходимость отслеживания прогона кода. Затем запустите программу в Visual Studio как обычно.
    • При использовании Purify в качестве автономной программы, не интегрированной в Visual Studio, выберите Файл > Выполнить. В окне Выполнить программу выберите Собирать ошибки, утечки и данные о прогоне кода (либо Собирать ошибки и данные об утечках если PureCoverage в системе отсутствует) и выполните программу.
  • В системе UNIX добавьте слово purify. Поместите его в начале строки compile/link. При наличии PureCoverage в системе добавьте purecov . Например:
    % purify purecov cc -g hello_world.c
    Затем выполните программу как обычно.
При выполнении программы Purify отобразит ошибки исполнения в программе просмотра Purify. При выходе из программы Purify сообщит об утечке памяти.

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

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

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

значок справочникаДополнительные сведения приведены в следующих разделах электронной справки Purify:

  • выполнение программ
  • сообщения Purify
  • исходный код
  • данные о прогоне кода

2. Выполните программу в Purify для поиска неэффективного использования памяти (управляемый Java и .NET код в Windows) 

Purify помогает обнаружить неполадки при работе с памятью для управляемого Java и .NET кода. С помощью Purify можно обнаружить:

  • сколько памяти использует ваша программа
  • сколько новой памяти потребляет программа для определенного набора действий 
  • какие методы и объекты вашей программы потребляют так много памяти 
  • какие объекты могут мешать сбору ненужных объектов при сборе мусора 
  • где требуется принудительный сбор мусора для повышения быстродействия
НАчните с выполнения программы в Purify.
  • При работе в Microsoft Visual Studio .NET, IBM WSWB или IBM WSS AD вначале выберите пункт меню PurifyPlus > Purify > ЗАпустить интеграцию Purify. Затем выполните программу как обычно.
  • Если вы используете Purify как автономную программу, не интегрированную с Visual Studio .NET или WSWB/WSS AD, выберите пункт Файл > Выполнить в пользовательском интерфейсе Purify. В окне Выполнить программу выберите пункт СОбирать данные профилирования памяти и запустите программу.
Когда программа завершит процедуры инициализации, воспользуйтесь командой Purify создания моментальной копии для проверки производительности использования памяти на данный момент. Моментальная копия является основой для проверки потребления памяти программой.   

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

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

Если объем выделенной методу памяти является неожиданном большим, проверьте исходный код и исправьте его при необходимости для освобождения памяти когда в ней больше нет необходимости.

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

значок справочникаДополнительные сведения приведены в следующих разделах электронной справки Purify: 

  • выполнение программ
  • сравнение выполнений
  • обозреватель данных

3. Выполните программу в Quantify для поиска узких мест производительности (Windows иUNIX).

Quantify предоставляет полный, точный и доступный для обработки набор данных быстродействия для программы и ее компонентов, что позволяет вам найти и устранить узкие места производительности в коде.

Начните с запуска программы в Quantify для сбора данных о быстродействии:

  • В системе Windows:
    • При работе в Microsoft Visual Studio 6 вначале выберите пункт меню Visual Studio Quantify > ЗАпустить интеграцию Quantify. Затем запустите программу в Visual Studio как обычно.
    • При работе в Microsoft Visual Studio .NET, IBM WSWB или IBM WSS AD выберите пункт меню PurifyPlus > Quantify > Запустить интеграцию Quantify. Затем выполните программу как обычно.
    • При использовании Quantify в качестве автономной программы, не интегрированной в Visual Studio или WSWB/WSS AD, выберите в пользовательском интерфейсе Quantify пункт Файл > Выполнить для выполнения программы.
  • В системе UNIX добавьте слово quantify в начало строки compile/link. Например:
         % quantify cc -g hello_world.c
    
    Затем выполните программу как обычно.

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

Quantify отображает следующие данные:

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

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

Изменив код и устранив или минимизировав узкие места быстродействия, повторно выполните обновленную программу в Quantify. Затем сравните новые результаты с предыдущим выполнением, создав набор данных "diff", предоставляющий четкие сведения об улучшении или снижении быстродействия.

Дополнительная информация приведена в следующих разделах электронной справки Quantify:

  • выполнение программ
  • сравнение выполнений
  • окно схемы вызовов
  • окно источника с аннотацией