Вопрос № 24517: Скажите, пожалуйста, как можно сделать программку очень быстрой максимально быстрой, на сколько можно!. Что для этого нужно знать. И каким образом собирать программку нужно? ...
Вопрос № 24.517
Скажите, пожалуйста, как можно сделать программку очень быстрой максимально быстрой, на сколько можно!. Что для этого нужно знать. И каким образом собирать программку нужно?
Отправлен: 03.08.2005, 20:56
Вопрос задал: IngineringG (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: Евгений Иванов
Здравствуйте, IngineringG!
для этого нужно оптимизировать по времени.
не обращать внимание на размер кода, а создавать алгоритм так, чтобы была как можно быстрее обработка данных.
немного нужно знать о времени выполнения команд процессора.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 03.08.2005, 21:13 Оценка за ответ: 5
Отвечает: Sager
Здравствуйте, IngineringG!
Для дос или для виндовс? Если для DOS то попытаться поменьше использовать прерывания(или вообще не использовать), зайти на intel.com и скачать и прочитать их доки(тока они на английском; чтобы писать максимально быстрые проги, нужно знать архитектуру проца), или почитай статьи агнер фога:
http://www.wasm.ru/publist.php?list=10
Также зайди еще в раздел вирусология, там есть советы по оптимизации и почитай на этом же сайте статьи Broken Sword про защищенный режим.
Еще зайди на сайт sasm.narod.ru, там может че подчерпнешь, прочти книгу Зубкова "Ассемблер для дос виндовс и юникс"
Собирать прогу нужно как обычно, на скорость никакие ключи не влияют, они лишь могут уменьшитьувеличить размер файла.
А вообще максимально быстрые и компактные проги у вирьмейкеров, всмысле вирусы, поэтому советую посмотреть исходники вирей и почитать их журналы, вот сайт, там почитай про вири под дос и виндовс(есть и на русском):
http://vx.netlux.org./vx.php?id=zidx
Ответ отправил: Sager (статус: 3-ий класс)
Отправлен: 03.08.2005, 21:29
Отвечает: Gluck3D
Здравствуйте, IngineringG!
Чтобы программа была ОЧЕНЬ быстрой надо:
1) Оптимальный алгоритм
2) Применение «быстрых» команд. Так команда копирования одного регистра в другой выполняется за два такта (8086) около 420 нс! А команда деления двух 16 битных чисел за 206 тиков тактового генератора, т.е около 0.000044 с! В различной документации по ассемблеру и процессорам есть таблицы времени выполнения команд. Там же обычно указывают размер команд в байтах, что тоже не маловажно (маленькая программа с «правильным» алгоритмом выполняется быстрее, чем неповоротливый гигант). Если тебе нужная такая таблица
пиши на @.
Ответ отправил: Gluck3D (статус: 1-ый класс)
Отправлен: 04.08.2005, 12:12 Оценка за ответ: 5