Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
|
лучший способ оптимизировать программу - это улучшить... 10.06.04 09:18 Число просмотров: 1227
Автор: noonv <Vladimir> Статус: Member
|
лучший способ оптимизировать программу - это улучшить алгоритм работы;
посмотри какие функции вызывается часто - оптимизируй их(можно и на asm-е переписать)
ну а лучшим дизассемблером является IDA
|
<beginners>
|
Какие существуют способы "дезасемблировать" програму? 09.06.04 23:29
Автор: Vasili Статус: Незарегистрированный пользователь
|
Привет всезнающий ALL.
Я написал программу(MSVC), не очень большую.
У меня есть и код этой программы и EXE-файл.
Задача стоит "optimize for speed"..
Слышал, что если ее "дезасемблировать" а потом в том же MSVC собрать заново то она будет работать быстрее...
Правда ли ЭТО? И как ЭТО сделать?
А может существуют другие способы "optimize for speed" , кроме Release with /O2??
Зараннее благодарен за любую информацию..
|
|
Спасибо ВСЕМ, кто откликнулся.. 10.06.04 18:22
Автор: Vasili Статус: Незарегистрированный пользователь
|
|
|
О, Василий, Вы мне разбудили во мне воспоминания о годах,... 10.06.04 10:38
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman Отредактировано 10.06.04 10:41 Количество правок: 1
|
О, Василий, Вы мне разбудили во мне воспоминания о годах, канувших в небытие. Тогда "под рукой" был интерпритатор Бэйсика, Фортран, "никакенный" С и Ассемблер.
Бейсик был по всеобщему умозаключению самый тормозной, поскольку являлся интерпретатором, и каждую мнемонически записанную операцию он перед выполнением переводил в удобоваримый код. Быстрее работали оттранслированные в машинный код программы Фортрана. Ассемблеровский код вылизанный вручную работал быстрее всего, поскольку трансляторы не всё могли перевести идеально.
Вот тогда то кое у кого и возникла мысль "Если фортрановскую программу (екзешник) дизассемблировать, а потом пересобрать при помощи уже самого ассемблера, то она будет работать быстрее". Глубочайшее заблуждение новичков.
Однажды я был свидетелем, как скорость работы вычислительной программы постепенно возрастала в десятки тысяч раз по мере модификации/улучшения или применения нового алгоритма. Таких примеров я могу привести не один.
Несколько десятков лет назад ядерные и химические реакции, физические процессы успешно обсчитывались на БЭСМ-6, которая была тормознее современного настольного ПК в десятки-сотни тысяч раз. А сейчас на современных ПК элементарные задачи сортировки или поиска поиска в базах почему-то ужасно "тормозят". На скорость выполнения задачи влияют ТОЛЬКО две вещи: быстродействие компьютера и оптимальность АЛГОРИТМА. Причем оптимальность кода с точки зрения процессора относится к оптимальности алгоритма и составляет от него ничтожно малую часть.
Можно бухнуть приличную сумму на замену процессора на вдвое-втрое более быстрый, а можно покрапеть часок-другой над алгоритмом и скорость программы возрастет не в два-три раза, а на два-три десятичных порядка.
|
|
Чушь 10.06.04 10:30
Автор: amirul <Serge> Статус: The Elderman
|
> Я написал программу(MSVC), не очень большую. > У меня есть и код этой программы и EXE-файл. > Задача стоит "optimize for speed".. > Слышал, что если ее "дезасемблировать" а потом в том же > MSVC собрать заново то она будет работать быстрее... > > Правда ли ЭТО? Нет, это чушь
> И как ЭТО сделать? Лучший способ получить ассемблерный листинг это включить его создание в самом MSVC
> А может существуют другие способы "optimize for speed" , > кроме Release with /O2?? Преждевременная оптимизация - корень всех бед. (с) не помню кто
Нужно оптимизировать не всю программу, а только "бутылочные горлышки", то бишь места, в которых программа проводит наибольшую часть времени при исполнении. Места эти находятся специальными программами - профайлерами (profiler), например TrueTime от Compuware
Еще на код можно натравить VTune от интеля - он показывает как и что можно улучшить в плане оптимизации под интеловский процессоры (правильно парование для U и V конвейеров, выравнивание по границе кеш-строки и пр.)
> Зараннее благодарен за любую информацию..
|
|
лучший способ оптимизировать программу - это улучшить... 10.06.04 09:18
Автор: noonv <Vladimir> Статус: Member
|
лучший способ оптимизировать программу - это улучшить алгоритм работы;
посмотри какие функции вызывается часто - оптимизируй их(можно и на asm-е переписать)
ну а лучшим дизассемблером является IDA
|
|
|