Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Размер программы в памяти [D6, WinXP]


JJ ©   (2005-09-21 20:30:00) 

Какими директивами компилятора, кроме {$M min,max} можно уменьшить размер программы в памяти?


Poirot   (2005-09-22 12:27:00) [1]

JJ ©   (21.09.05 21:51) [11]

Ну как минимум библиотечки нужны, которые тебе помагают окошки рисовать и прочая фигня:) посмотри всю таблицу экспорта для примера :)
Угадай куда эти библиотечки мапятся?:) если не ошибаюсь я  конечно:)
Да и не компилятор это забирает:) ему-то по барабану:) гы:) в данном случае её ползует, память, загрузчик:)


Игорь Шевченко   (2005-09-21 23:18:00) [2]


> Зачем компилятор забирает у системы больше памяти, чем нужно
> программе?


А ты знаешь, сколько нужно программе ? Программе нужно много.


Nick Denry   (2005-09-21 22:54:00) [3]

Anton_K ©   (21.09.05 22:37) [15]

Это явно не тот случай :)))


Anton_K   (2005-09-21 22:37:00) [4]


> ИМХО время затраченное на написание программы на АСМе и
> разница которая будет заметна будут в десятки раз отличатся
> друг-от друга.

За всё нужно платить.


Nick Denry   (2005-09-21 22:35:00) [5]

Anton_K ©   (21.09.05 22:15) [13]

На программе побольше разница будет заметна.

ИМХО время затраченное на написание программы на АСМе и разница которая будет заметна будут в десятки раз отличатся друг-от друга.

И сама разница существенной не будет вообще (порядка 30-40 кб).


Anton_K   (2005-09-21 22:15:00) [6]


> А разница?  Голое окн в винде все-равно будет занимать около
> 600 кб.

На программе побольше разница будет заметна.


Nick Denry   (2005-09-21 22:07:00) [7]

Anton_K ©   (21.09.05 21:31) [9]

А разница?  Голое окн в винде все-равно будет занимать около 600 кб.

4-х килобайтный экзешник написанный на асме и содержащий голый диалог в памяти (обратите внимание, так показывает диспетчер задач) занимает 708 Кб.

JJ ©   (21.09.05 21:51) [11]

компилятор не причем


JJ   (2005-09-21 21:51:00) [8]

Зачем компилятор забирает у системы больше памяти, чем нужно программе?


Плохиш   (2005-09-21 21:45:00) [9]


> JJ ©   (21.09.05 20:30)  
> Какими директивами компилятора, кроме {$M min,max} можно
> уменьшить размер программы в памяти?

Что, костюмчик жмёт?


Anton_K   (2005-09-21 21:31:00) [10]

>JJ
Пиши на ассемблере.


JJ   (2005-09-21 21:20:00) [11]

И такой код занимает ~600k
program P;
type
 TPoint = packed record
   X: Longint;
   Y: Longint;
 end;
 tagMSG = packed record
   hwnd: integer;
   message: integer;
   wParam: integer;
   lParam: integer;
   time: integer;
   pt: TPoint;
 end;

var Msg: tagMSG;

function GetMessage(var lpMsg: tagMsg; hWnd: integer;
 wMsgFilterMin, wMsgFilterMax: integer): integer; stdcall;external 'user32' name 'GetMessageA';

begin
 while GetMessage(Msg,0,0,0)=0 do;
end.


AlexWlad   (2005-09-21 21:11:00) [12]


> JJ ©   (21.09.05 20:46) [4]


А ты еще добавь ComObj или QuickRpt...


JJ   (2005-09-21 20:57:00) [13]

Это на диске она занимает 8192, а если ее запестить, то в Task Manager`е объем памяти - ~600к


Джо   (2005-09-21 20:55:00) [14]


>  [4] JJ ©   (21.09.05 20:46)
> Если запустить этот код:
> uses
>  messages,
>  windows;
> var
>  mMsg        : TMsg;
>  while GetMessage(mMsg,0,0,0) do
>  begin
>    TranslateMessage(mMsg);
>    DispatchMessage(mMsg);
>  end;
> end.
> программа занимает ~622k


Неправда ваша. На Д6 она занимает 8192 байта.


JJ   (2005-09-21 20:46:00) [15]

Если запустить этот код:
uses
 messages,
 windows;
var
 mMsg        : TMsg;
 while GetMessage(mMsg,0,0,0) do
 begin
   TranslateMessage(mMsg);
   DispatchMessage(mMsg);
 end;
end.

программа занимает ~622k


JJ   (2005-09-21 20:42:00) [16]

{$M } задает размер стека. Пробовал, ставил стек 16384 - в таск менеджере программа занимала 1588к, убирал директиву - 1604. Программа создает одно окно на WinAPI, и болше ничего не делает, а в памяти занимает 1.5Мб...


Anatoly Podgoretsky   (2005-09-21 20:41:00) [17]

Вот очень маленькая программа
Program test;
begin
  Readln;
end.

Посмотри результат.


Джо   (2005-09-21 20:32:00) [18]

А {$M} имеет отношение "к размеру программы в памяти"?


Наверх

Титульная страница Поиск, карта сайта Написать письмо