Russian Qt Forum
Май 18, 2024, 04:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: performance analysis and memory leak tools  (Прочитано 31468 раз)
L.Marvell
Гость
« Ответ #15 : Июнь 12, 2006, 19:47 »

Под Линукс - http://valgrind.org/ (KDevelop умеет с ним работать). Под винду не скажу, т.к. не знаю.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #16 : Июнь 12, 2006, 23:00 »

Bound Checker под виндоус
но 6 версия туповата, а 7 очень тормозная
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #17 : Июнь 13, 2006, 14:32 »

есть еще прога  типа insign++ но я ее так и не заставил работать!

мой путь обычно
собираем VC++
собираем G++ и потом valgrind
потом снова VC++ и потом VTune!

вот код получается достаточно устойчив! при условии что пишешь на QT! Улыбающийся
Записан
Winstrol
Гость
« Ответ #18 : Октябрь 10, 2007, 16:20 »

Кто-нибудь пользовался CodeAnalyst для профилирования Qt приложений? Пока даже самый простой тест на QT не получается прикрутить. Примеры из поставки профайлера работают. Никто не в курсе, где грабли могут быть?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #19 : Декабрь 19, 2007, 01:53 »

Кто может подсказать тулзу для определения участков программы имеющие проблемы с производительностью?

Побывал Performance Analysis из пакета Compuware DevPartner for Visual C++ но без успешно. По непонятным причинам она отказываеться работать. Error detection работает нормально.

У кого есть опыт в этом деле - поделитесь. Буду признателен! Улыбающийся Нужна под Линукс или Винду.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
uriel
Гость
« Ответ #20 : Декабрь 19, 2007, 07:21 »

Под Линукс использую две разных программы.
Во-первых, можно воспользоваться стандартными профилирующими средствами GCC. Для этого при компиляции и линковке нужно добавить ключ -pg. Далее, после запуска программы появится файлик gmon.out. Можно, конечно, работать с ним и в консоле, но я предпочитаю KProf. Только открывать там надо не этот файл, а сам бинарник приложения. В итоге получите статистику, в каких функциях проводится больше всего времени (в ms), какие чаще всего вызываются, etc.
Во-вторых, есть набор утилит valgrind, а конкретно callgrind. Для этого запускаем приложение следующим образом: valgrind --tool=callgrind BINARY_FILE. При этом, правда, скорость выполнения программы снижается в 5-10 раз, так как программа выполняется на собственном виртуальном процессоре утилиты, чтобы перехватывать все инструкции. На выходе получите файлик со именем callgrind.out.PID. Его лучше всего просматривать через KCachegrind. Файл содержит полную статистику по количеству процессорных инструкций, выполненных в каждой функции, вплоть до libc. Улыбающийся Программа строит очень удобные графы вызова, позволяет группировать функции по ELF-объектам, классам, исходникам. Если есть отладочная информация, можно даже просматривать конкретные строчки кода. В целом, очень полезная штука. Улыбающийся
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #21 : Декабрь 19, 2007, 09:57 »

Спасибо за столь развернутый ответ! Буду пробывать!  Улыбающийся
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #22 : Декабрь 20, 2007, 03:18 »

Заюзал callgrind. Супер! Реально эта тулза мне помогла! Ещё раз большое спасибо, uriel!
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Mikor
Гость
« Ответ #23 : Декабрь 20, 2007, 06:44 »

Всю жизнь использую Intel VTune Performance Analyzer. Весьма им доволен. Раньше были достаточно глючные версии, теперь вроде лучше стало. Есть версии под Linux и Windows. Недавно ознакомился с профилировщиком в Visual C++ 2008 Team, как познакомился, так и решил больше неиспользовать. Слишком не функциональный.
Оффтопик: А вообще, профилировка это очень часто заточка под архитектуру. Гораздо привлекательнее оптимизировать (пересмотреть) сам алгоритм, вряд-ли какая-либо оптимизация будет быстрее. Ну еще сразу разработка алгоритма под SSE дает прирост производительности, но надо либо очень-очень хорошо владеть оптимизацией на ассемблере (прочитав свежий Intel Optimization Manual), либо очень хорошо прочитать доку по компилятору, чтобы указать ему что оптимизировать и дать возможность разобрать логику алгоритма на SSE комманды (хотя-бы до степени векторизации массивов). Т.е. занятие это сложное, аналитическое и, как правило, не благодирное со стороны заказчика. Гораздо дешевле купить проц побыстрее, с большим кол-вом ядер, с более быстрой шиной, мат. плату с современным чипсетом, быструю память... А кому надо всё-таки большие вычислительные можности использовать, советую бросить взгляд в сторону nVidia CUDA (ищем в google).
Записан
vregess
Гость
« Ответ #24 : Декабрь 20, 2007, 07:34 »

Хорошая инфа. Давайте ее в фак засунем. Будет полезно.
Спасибо за информацию!
Записан
uriel
Гость
« Ответ #25 : Декабрь 20, 2007, 09:20 »

Intel VTune Performance Analyzer, насколько я понял, платная программа, а это не так хорошо, как хотелось бы. Valgrind, напротив, Open Source проект, который включает в себя набор утилит для разностороннего профилирования приложений. Единственный недостаток, насколько мне известно, это отсутствие версии под Винду. Но там и своего добра достаточно, опять же, насколько мне известно.
Кроме того, не считаю, что профилирование - суть заточка под конкретную архитектуру. Просто оно позволяет найти слабые места в программе, какие-то куски неэффективного на _любых_ платформах кода. Можно отлавливать также утечки памяти. Ну а в целом, согласен в Вами, что занятие это не всегда благодарное, но тем не менее, иногда очень нужное. Улыбающийся
Записан
Mikor
Гость
« Ответ #26 : Декабрь 20, 2007, 17:45 »

Насчет платности VTune небольшой оффтопик.

Как-то подхожу к начальству похвастаться, поставил на ноут все ПО лицензаонное.
- Вот у меня даже OpenOffice стоит, бесплатный лицензионный
- А чем он лучше Microsoft Office?
- Тем что бесплатный!
- А Microsoft Office что? Платный что-ли?? В жизни бы не подумал ))

VTune под Windows есть триал на месяц. За это время его можно и оценить и отказаться и купить и скачать вместе с ключиком. Кому что совесть подскажет...

Из личного опыта скажу, что достаточно соблюдать N простых правил, чтобы не делать типичных ошибок. В статьях Криса Касперски (для тех кто не знает английского) или в книжках Intel описывается какой именно код надо оптимизировать, как надо изначально продумывать алгоритм.
Коль есть сложные алгоритмы, берем Mandelbrot пример, изучаем, пишем аналогичное ) благо проблем с многопотоковостью нет (итак много информации есть в интернете), проблемы с железом Intel и AMD кое-как решили многоядерностью. Дать пользователю время полюбоваться красивым Progress Bar с подписью сколько еще подождать гораздо приятнее, чем он будет тыркать в зависшую на вычислениях программу. Да и реализуется гораздо проще, чем утомительная работа по оптимизации. К тому же, эффект для начальства очевиден, а результаты профилировки до оптимизации и после начальство особо не потрясают.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #27 : Декабрь 20, 2007, 17:59 »

Все верно, но если это не собственный код, а код кустомера? Тогда и в помощь такие утилиты...
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #28 : Декабрь 20, 2007, 22:11 »

большое спасибо uriel
Заценил kcachegrind и valgrind --tool=callgrind
 Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый Веселый

Такие вот чувства...
Записан
uriel
Гость
« Ответ #29 : Декабрь 20, 2007, 22:24 »

Да не за что, собственно. Улыбающийся
P.S. Чувства знакомые, у самого такое же было. Подмигивающий
Но, кстати, несмотря на всю навороченность KCachegrind'а, некоторые вещи он не позволяет заметить. Например, был случай, когда алгоритм работал недостаточно быстро, а callgrind ничего подходящего не находил. Собрал с ключиком -pg, посмотрел в KProf. Оказалось, что куча циклов тратится в деструкторе QList. Объявил переменную статической и в итоге количество циклов, затраченных на программу в целом уменьшилось в два раза.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.097 секунд. Запросов: 19.