![]() |
eXeL@B —› Вопросы новичков —› Подскажите как отпрофайлить прогу ! |
Посл.ответ | Сообщение |
|
Создано: 30 декабря 2006 15:34 · Личное сообщение · #1 Приветсвую ! Извиняюсь если задаю идиотский вопрос. Нужно взломать ActiveHDL 7.2 (www.aldec.com) Это приблудина такая, для разработки на языках Verilog и VHDL. Работает демо-версия 20 дней. Моделирование ограничено 10 микросекундами модельного времени ну и еще кое-какие ограничения есть. С 20 днями и 10 микросекундами я разобрался. Бяка вылезла в другом. Похоже в демо-версию ввели пустые циклы. Тестовый проект у меня ActiveHDL 6.3 считает мгновенно, а 7.2 - 44 секунды !!! Вобщем пришло в голову, что если бы был профайлер, способный работать с любыми бинарниками, он бы мне совершенно четко показал, что там тормозит. Но такового я не знаю. Никто не может подсказать, что в этой ситуации делать ? А то код рыть больно впадлу, там его немерянно... С уважением Евгений. ![]() |
|
Создано: 31 декабря 2006 00:14 · Личное сообщение · #2 eugenk пишет: Вобщем пришло в голову, что если бы был профайлер, способный работать с любыми бинарниками, Такой профайлер есть в VTune от Интела, только весит он не слабо. И все равно потом придется разбираться со структурой подпрограмм. Как вариант - трейсить и писать прогу для поиска "пустых циклов". Если цикл состоит из нескольких команд, то можно и ручным происком команд loop все найти. Вот если цикл основан на джампах, тогда не знаю как быть. Но можно написать анализатор - например гистограмму адресов построить - короче вариантов море. ![]() |
|
Создано: 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 —› Вопросы новичков —› Подскажите как отпрофайлить прогу ! |