Сейчас на форуме: _MBK_, ut2004, vsv1 (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Подскажите как отпрофайлить прогу !
Посл.ответ Сообщение

Ранг: 3.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 30 декабря 2006 15:34
· Личное сообщение · #1

Приветсвую ! Извиняюсь если задаю идиотский вопрос. Нужно взломать ActiveHDL 7.2 (www.aldec.com)
Это приблудина такая, для разработки на языках Verilog и VHDL. Работает демо-версия 20 дней. Моделирование ограничено 10 микросекундами модельного времени ну и еще кое-какие ограничения есть. С 20 днями и 10 микросекундами я разобрался. Бяка вылезла в другом. Похоже в демо-версию ввели пустые циклы. Тестовый проект у меня ActiveHDL 6.3 считает мгновенно, а 7.2 - 44 секунды !!! Вобщем пришло в голову, что если бы был профайлер, способный работать с любыми бинарниками, он бы мне совершенно четко показал, что там тормозит. Но такового я не знаю. Никто не может подсказать, что в этой ситуации делать ? А то код рыть больно впадлу, там его немерянно...
С уважением
Евгений.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 31 декабря 2006 00:14
· Личное сообщение · #2

eugenk пишет:
Вобщем пришло в голову, что если бы был профайлер, способный работать с любыми бинарниками,

Такой профайлер есть в VTune от Интела, только весит он не слабо. И все равно потом придется разбираться со структурой подпрограмм. Как вариант - трейсить и писать прогу для поиска "пустых циклов". Если цикл состоит из нескольких команд, то можно и ручным происком команд loop все найти.
Вот если цикл основан на джампах, тогда не знаю как быть. Но можно написать анализатор - например гистограмму адресов построить - короче вариантов море.



Ранг: 3.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 декабря 2006 00:40
· Личное сообщение · #3

tunda37, увы, VTune это первое что пришло на ум. К сожалению, он как и gprof работает лишь с исходниками. Т.е. компилишь их специально под профайлер и тогда это работает. А так чтобы уже откомпиленный бинарник, это нет... Вобщем если честно, сейчас уже просто не понимаю, что там у меня происходит. Сделал более простой проект, он выполняется в 7.2 столь же быстро как в 6.3... Короче просто чудеса какие-то... Там есть еще ограничение - 5 мегабайтов выделяемой памяти на проект. Пока я его не снял. Что удивительно, что там, где 6.3 выделяет почти 90 мегабайт, 7.2 выделяет чуть больше трех... Может там аллоцирование какое-то интеллектуальное ? Типа видит он что стоит ограничение по памяти, и пихает туда как можно больше, не заботясь об оптимизации... А жать там очень даже есть чего... Вобщем сомневаться я уже чего-то начал, что там пустые циклы. Иначе простой проект тормозил бы точно так же... Попробую убить ограничение в 5 мегабайт, тогда посмотрим, может и скорость вырастет...

А с профайлингом я подумал лучше всего наверно было бы получить список функций в IDA (их в нужной dll около 30 тысяч), отпатчить автоматически эту dll, перенаправив вызовы на свою dll, которая вызывает старые функции, добавляя к ним чтение со счетчика клоков в начале и конце вызова, и складывает для каждой функции всю эту инфу в таблицу. Сумбурно написал, но сам себе это представляю... Программирования тут будет много, но не безнадёга хотя бы...


 eXeL@B —› Вопросы новичков —› Подскажите как отпрофайлить прогу !
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати