Экспериментировал с Intel Parallel Inspector в режиме диагностики ошибок работы с памятью. Могу сказать, что продукт и то, что он делает, мне крайне понравилось. Особенно понравилась прекрасно выполненная интеграция в Visual Studio и полноценная поддержка 64-битных проектов, что оценят пользователи Bounds Checker.
В основном я экспериментировал с проектом Viva64 и при этом смог обнаружить одну вполне серьезную ошибку.
Очень понравился графический интерфейс настроек режима запуска Parallel Inspector, просто, понятно:
Понравился индикатор, насколько данный вид анализа может замедлить выполнение программы. Мне так понравился подобный подход, дизайн и наглядность того, что следует ожидать, что я решил проверить точность этого индикатора на проекте Viva64. Конечно, выборка не репрезентативна, но все равно очень было интересно. Вот результаты запуска 64-битной debug-версии Viva64:
Режим запуска |
Ожидаемое замедление, согласно показаниям на шкале Parallel Inspector |
Полученное замедление, при тестировании проекта Viva64 |
---|---|---|
Без Parallel Inspector |
Замедления нет |
(1.23 сек) - Замедления нет |
"Does my target leak memory?" |
В 2 - 20 раз |
(17.70 сек) - 14.4 раз |
"Does my target have memory access problems?" |
В 10 - 40 раз |
(72.57 сек) - 59 раз |
"Where are the memory access problems?" |
В 20 - 80 раз |
(70.80 сек) - 57.6 раз |
"Where are all the memory problems Inspector can find?" |
В 40 - 160 раз |
(404.82 сек) - 329.1 раз |
Я считаю, что предположение о замедлении сделано достаточно точно, для случая, когда о проекте ничего не известно. Немного выбивается последний режим, но в анализаторе Viva64, в отличие от среднестатистической программы, очень большой объем операций связан как раз с выделением памяти при построении и анализе синтаксического дерева. Поэтому замедление больше ожидаемого совершенно естественно.
Замедления, к которым приводит использование Intel Parallel Inspector меня совершенно не смущают, и я считаю их естественными и даже не большими для инструмента динамического анализа реализующую подобную функциональность. Следует только понимать, что методологию использования подобных динамических анализаторов разумно строить не в режиме работы с программой в режиме реального времени. Здесь скорее подходят пакетные запуски или системы автоматизированного тестирования, которые ночью будут старательно нажимать кнопки в тестируемом приложении, не переживая о том, что отклик может занимать минуты или часы.
Подводя итог. Очень хороший инструмент. Рекомендую.