Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.



 
ФорумПоследние изображенияПоискРегистрацияВход

Поделиться | 
 

 Assembler vs ЯВУ

Предыдущая тема Следующая тема Перейти вниз 
АвторСообщение
vinni
МатЧатовец
vinni

Мужчина Сообщения : 13
Зарегин : 2011-10-01
Возраст : 36

Assembler vs ЯВУ Empty
СообщениеТема: Assembler vs ЯВУ   Assembler vs ЯВУ I_icon_minitimeСр Ноя 02, 2011 9:20 am

(Перенесено Админом)
Большинство будущих программистов часто клюют на лозунги в стиле "Убери всё лишнее в проге и будет она маленькой, словно на Асме." Что бы стереть этот миф с лица земли мы проведем небольшой тест, сравнив две программки, скомпилированные Под Masm-ом и Delphi соответсвенно.

И так приступим:

Запускаем Delphi (5-6-7, не суть важно), создаем новое приложение (File-New-Application) и первым же делом в новоиспеченном монстрике отключаем модули и формы( Топаем в View->Project Manager. Всё что ниже Project1.exe - удаляем ). Далее смотрим в исходник (View source) и отрезаем подключенный модуль Forms. Соответсвенно все объекты, объявленные в Forms отрезаем тоже(между Begin и end удаляем объект Application). Теперь поставим модуль Windows вместо Forms(Для того, что бы прога могла подключать WinAPI) и у нас должно получиться следующее:
Код:
 Program Project1;
 uses
  Windows; { Это подключенный модуль, хотя впринципе его можно обрезать тоже
 но тогда программа не сможет ничего делать вообще}
 begin
 end.

Компилим это чудо по Ctrl+F9 и смотрим на весомость. Ага - 14336 байта в моем случае. Ничего лишнего уже там нету (Даже если к чертям отрезать uses вместе с подключенным модулем Windows, программа сократится всего на ~1000 байт) и оптимизировать далее некуда. По-крайней мере штатным компилятором.

Assembler vs ЯВУ Project1o

Теперь открываем RadAsm, создаем новый проект (Если вы подключали MASM,TASM,FASM) выбираем в появившемся меню - Win32App и строчим имя проекта - Test. Нажимаем далее и выбираем то, что хотим сделать - Win32.exe.
Проект создан, осталось жмакнуть Ctrl+F5 и ассемблировать его. Появится пустое окошко, что собственно и следовало ожидать.

Assembler vs ЯВУ Testug

Мы можем оптимизировать программу вручную, убрав все Апи-функции, вызываемые нашим файлом, но не будем этого делать, а сравним два получивших у нас файла: Test.exe и Project1.exe

Project1.exe - 14 3336 байт
Test.exe - 3072 байт




Вот и почувствуйте, как говорится, всю задницу оптимизации Языков Высокого Уровня, и это не смотря на то, что в Test.exe мы пользуемся Апи функциями винды, а в Project1.exe уже не хрена ни чем не пользуемся, отрезав по самое нехочу всё, что можно было отрезать.

Вот и верьте всем крикунам, что на языках высокого уровня можно оптимизировать код так, что Ассемблер становится ненужной вещью. Конечно же, С(язык такой) позволяет создавать программы, по скорости и выполнению почти не уступающих Ассемблерным, но опять же - Ассемблер не тривиальный язык, а язык особый, с помощью которого можно и запороть код, и напротив - улучшить так, как ЯВУ ни когда не смогут из-за рамок, диктуемых им компиляторами.

Вернуться к началу Перейти вниз
https://matchat.forum2x2.ru
 

Assembler vs ЯВУ

Предыдущая тема Следующая тема Вернуться к началу 
Страница 1 из 1

Права доступа к этому форуму:Вы не можете отвечать на сообщения
 :: Computer Technology :: Coding-