Профилировщик для FPC

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Сообщение @!!ex » 22.04.2008 08:54:08

*vmr писал(а):Все, меряние конечностями началось... ))

Вы меня спровоцировали. :))

*vmr писал(а):
@!!ex писал(а):Просто вы так упирали на то, что эта статья - истина в первой инстанции, что удержаться и не поспорить было делом сложным.

У вас есть какие либо замечания к статье? Или неточности?

Например, в статье нет ни слова о том, как влияет на работоспособность потока динамчиеская смена приоритетов. А это весьма важный момент, о котором забывать нельзя. Еще примеры?

*vmr писал(а):
@!!ex писал(а):Тут только те проекты, где я - лид

Эх, не люблю я лидов.... :) :) :)

Так вы же сам - лид. не?

*vmr писал(а):
@!!ex писал(а): Кстати, Maelstrom - как ОТЛИЧНЫЙ пример использования многопоточности.

Да, но вы не знаете как именно работают потоки в ОТЛИЧНОМ примере....

К сожалению да... это мое упущение. :((

*vmr писал(а):
@!!ex писал(а):А как же тестирование?

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

Ну-ну. QA отдел следит за проектом на любой стадии. Даже альфу протестировать можно. и уж тем более можно протестировать проект который что-то умеет делать. ИНтерфейс опятьже тестируется. да мало ли чего...

*vmr писал(а):Насколько я понимаю вы не делали огромных проектов, на разработку которых уходят годы. Я делал(ю)(правда годы на одного программиста. Т.е. меня :) ). Потому понимаю.

Вообще я щанимаюсь разработкой движка для 3Д игр. Кроссплатформенного.
Этому движку примерно 2.5 года. Параллельно с арзвитием движка на нем выпускаются игры.
Что есть огромный проект в вашем понимании? Критерии?

*vmr писал(а):У вас есть ТЗ, вы его окончили в строк, протестировали и забыли.
А что делать когда ТЗ нет? Или оно неполное, или неохватывает все нюансы (как в Ксенусе)?

Не смешно.
Я уже год борюсь с тем, чтобы у нас делали ТЗ. Я могу привести пример ТЗ.... Как думаете, много финормации умещаеться на 4 листах А4? Там о полноте и мечтать не приходится. Если взять наш текущий проект сейчас и пол года назад... Различия будут весьма заметны....

*vmr писал(а):Во первых непонятно как вы будете "контролировать количество потраченого на загрузку времени".

В начале инициализируем таймер. Как только таймер превысел указанное значение - прервыаемся.

*vmr писал(а):Что делает игра когда отправила всю геометрию на GPU? Она ждет. Ждет пока не наступит момент VSync, или пока не освободится push-buffer или пока не отрисуется n-ый предыдущий кадр. Что в это время делает проц?
1. Нифига не делает - ожидает (в однопоточном приложении)

Либо я чего то не понимаю в программированиии графики, либо вы.
Есть две замечательных команды glFlush и glFinish.
Так вот, КАК они могут работать. если в процессе рендеринга основной поток висит? Мне так кажется, что они могут работать, т.к. пока идет рендер, основной поток НЕ висит.
@!!ex
новенький
 
Сообщения: 35
Зарегистрирован: 12.04.2008 11:55:32

Сообщение ev » 22.04.2008 09:35:20

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

любая фича должна быть задокументирована
если не в ТЗ, то в каком-то подобии его
а дальше должна быть составлена ПМ испытаний (составляется именно исходя из ТЗ)... и потом все проверяется
иначе так и получается, фич полно - уже никто не помнит где, какие и как работают... как испытывать? никак... на глаз вроде работает и ладно... и в итоге всю жизнь потом ловить глюки ;)

одно дело если проект мелкий и народу лень этого делать (банально не всегда оправдано)
и совсем другое дело, когда крупный проект - это значит что даже на этапе проектирования уже заложены ошибки... что уж говорить о реализации...

Я уже год борюсь с тем, чтобы у нас делали ТЗ. Я могу привести пример ТЗ.... Как думаете, много финормации умещаеться на 4 листах А4?

делайте не совсем официальное ТЗ... постепенно... сначала для себя, потом и другие поймут его необходимость
я не предлагаю оформлять все по ГОСТу, но некое подобие (имхо) всеже должно быть
ev
долгожитель
 
Сообщения: 1772
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение Attid » 22.04.2008 10:01:14

ev писал(а):и потом все проверяется
иначе так и получается, фич полно - уже никто не помнит где, какие и как работают... как испытывать?

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


ev писал(а):как испытывать? никак... на глаз вроде работает и ладно... и в итоге всю жизнь потом ловить глюки Wink

испытывать должен специально обученый тестер, так как прог все равно не может, он может просмотреть код на ошибки, потыкать по инструкции, а не стандартное поведение не проверит.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение *vmr » 22.04.2008 15:10:09

@!!ex писал(а):Например, в статье нет ни слова о том, как влияет на работоспособность потока динамчиеская смена приоритетов. А это весьма важный момент, о котором забывать нельзя.

Как не слова? Ммм. Да там не слова. Но в соседней же статье того же автора на это обращается внимание(ссылку я уже приводил ранее)
А вообще статья - не здоровенный том рихтера, согласитесь, всех нюансов не напишешь. И по отсутствию таковых ни в коем разе не означает о некомпетентности автора.

@!!ex писал(а):Так вы же сам - лид. не?

Эх.... сам себе лид(немножко), архитектор, программер и кодер. Все в одном лице...
Грустно все это.... хотя скиллы растут, да.

@!!ex писал(а):Ну-ну. QA отдел следит за проектом на любой стадии. Даже альфу протестировать можно. и уж тем более можно протестировать проект который что-то умеет делать. ИНтерфейс опятьже тестируется. да мало ли чего...

QA у нас нет. Вернее я выполняю их обязанности :)
Потом задача QA выявлять баги, а не тормоза при подгрузке уровней.
А если уж и нашли тормоза, то их исправление не является первоочередной задачей (увы это так)

@!!ex писал(а):Вообще я щанимаюсь разработкой движка для 3Д игр. Кроссплатформенного.

Круто. Не знал.

@!!ex писал(а):В начале инициализируем таймер. Как только таймер превысел указанное значение - прервыаемся.

Не совсем понял. В main loop по истечении времени выполняем определенную процедуру?
Тогда же мы прерываем основной поток. Но зачем его прерывать, когда можно утилизировать время его простоя? Время простоя CPU?

@!!ex писал(а):Так вот, КАК они могут работать. если в процессе рендеринга основной поток висит? Мне так кажется, что они могут работать, т.к. пока идет рендер, основной поток НЕ висит

Замерте время этих glFlush, glFinish и wglSwapBuffers. Сколько времени на них тратится? Почему это время сильно зависит от параметров сцены?
Знаете что в этот момент происходит? Проц ждет. Ждет пока отрендерится предыдущий кадр, освободится место в command-buffer'е. Проц ждет GPU.
Вот это время и можно утилизировать.

Применение многопоточности в играх.
Сама статья так себе(тем более не совсем верная). Гораздо ценнее комментарии к ней, какие я и советую прочитать полностью

ev писал(а):любая фича должна быть задокументирована
если не в ТЗ, то в каком-то подобии его
а дальше должна быть составлена ПМ испытаний (составляется именно исходя из ТЗ)... и потом все проверяется

А когда нету ТЗ. Когда заказчик(начальство) сам не знает чего он хочит. "Сделайте, а потом посмотрим"
Вот и получается что делаешь совершенно "не ту" архитектуру. А когда это осознаешь, уже поздно что либо менять.

ev писал(а):и совсем другое дело, когда крупный проект - это значит что даже на этапе проектирования уже заложены ошибки... что уж говорить о реализации...

Во во. В этом и вся "соль"
Аватара пользователя
*vmr
постоялец
 
Сообщения: 168
Зарегистрирован: 08.01.2007 01:46:07
Откуда: Киев

Сообщение ev » 22.04.2008 17:48:41

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

программер типа тупой? ;)
ПМ испытаний именно для того и пишется, чтобы неподготовленный пользователь мог проверить соответствие программы ТЗ

А когда нету ТЗ. Когда заказчик(начальство) сам не знает чего он хочит. "Сделайте, а потом посмотрим"
Вот и получается что делаешь совершенно "не ту" архитектуру. А когда это осознаешь, уже поздно что либо менять.

писать самому, пытаться разобраться в нюансах, строить схемы и т.п.
потом будет проще как самому, так и если кому-либо вникать придется
ev
долгожитель
 
Сообщения: 1772
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение Attid » 22.04.2008 20:07:12

ev писал(а):программер типа тупой?

типа того =) он работает по заданому алгоритму.

ev писал(а):ПМ испытаний именно для того и пишется, чтобы неподготовленный пользователь мог проверить соответствие программы ТЗ

как показывает практика если делать все по описанным шагам все обычно работает.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение @!!ex » 23.04.2008 00:37:16

Attid писал(а):как показывает практика если делать все по описанным шагам все обычно работает.

Так не надо шаги описывать. :))
У нас тестеры стабильно находят "кривой" путь.
Тестируешь тестируешь, тестируешь тестируешь.... привозишь версию... тестер ее включает.... и через 30 секунд слышишь: "А это че за баг??"
Матерится уже сил не хватает, :((
Тем более что все баги не выловить....
Вот что денлать с багом, который появился за пол года тестирования ОДИН раз?
@!!ex
новенький
 
Сообщения: 35
Зарегистрирован: 12.04.2008 11:55:32

Сообщение alexs » 23.04.2008 07:30:48

@!!ex писал(а):У нас тестеры стабильно находят "кривой" путь.

Это везде так - и это нормально.
Радуйся что через 30 секунд.
Бывает баг находится после полугода успешной работы - когда выясняеш в чём дело, оказывается пришл новый юзер и залез ...
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Профилировщик для FPC

Сообщение *vmr » 08.05.2008 21:55:16

Итак, после трех страниц оффтопа предлагаю все же вернутся к теме

Есть ли фришные профилировщики для ФПЦ? (Ну, ладно, платные тоже можно :) )
Простейшие(как в #1-м посте) не катят. Нужно чтоб многопоточность поддерживалась...

----------------------------

Насколько актуальна тема? Нужно ли братся за написание своего убер-мега-профайлера? Опенсорс/free конечно.
Аватара пользователя
*vmr
постоялец
 
Сообщения: 168
Зарегистрирован: 08.01.2007 01:46:07
Откуда: Киев

Re: Профилировщик для FPC

Сообщение Mirage » 11.05.2008 01:41:43

*vmr писал(а):Насколько актуальна тема? Нужно ли братся за написание своего убер-мега-профайлера? Опенсорс/free конечно.


Канечна!!! :D

P.S.: По мне, так то, что подгрузка не тормозит на многоядерниках, тормозя на одноядерниках, говорит как раз об умении автора применять многопотчность. На одноядерниках гарантировать остутствие тормозов при подгрузке можно разве что в простых случаях/малых объемах.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Профилировщик для FPC

Сообщение vital » 16.05.2008 23:01:06

Никто не пробовал Delphi MiniProfiler 1.53?
http://ylsoftware.com/?action=files&fa=viewfile&file=8
Пока не разбирался: качнул, глянул исходники - поддержка многопоточности вроде как заявлена.
vital
новенький
 
Сообщения: 86
Зарегистрирован: 17.10.2007 14:52:59

Re: Профилировщик для FPC

Сообщение zub » 16.08.2010 23:41:34

прошло 2 года... //пряча лопату
Появилось чтонибудь чем можно серъезно попрофилировать?
в valgrind реальные ситуации смоделировать не получается изза жутких тормозов, от тонн своего лога с временем исполнения функций - голова пухнет...

Как я понимаю aqtime не работает изза несовместимости отладочной информации fpc с td32. может ее можно какнибудь конвертировать?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Профилировщик для FPC

Сообщение Kitayets » 17.08.2010 01:03:09

А чем gprof не устраивает?
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24

Re: Профилировщик для FPC

Сообщение zub » 17.08.2010 21:16:23

Забыл отметить - с gprof программа падает на старте гдето внутри gprof`а. ну и профилировать хотелось бы под виндой... aqtime был бы идеальным вариантом.

Тут http://www.microway.com.au/catalog/auto ... oducts.stm есть упоминание о AQtime Linux Edition. что за зверь такой?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Пред.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 2

Рейтинг@Mail.ru