Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

Размер программы в памяти   Найти похожие ветки 

 
JJ ©   (2005-09-21 20:30) [0]

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


 
Джо ©   (2005-09-21 20:32) [1]

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


 
Anatoly Podgoretsky ©   (2005-09-21 20:41) [2]

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

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


 
JJ ©   (2005-09-21 20:42) [3]

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


 
JJ ©   (2005-09-21 20:46) [4]

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

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


 
Джо ©   (2005-09-21 20:55) [5]


>  [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:57) [6]

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


 
AlexWlad ©   (2005-09-21 21:11) [7]


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


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


 
JJ ©   (2005-09-21 21:20) [8]

И такой код занимает ~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.


 
Anton_K ©   (2005-09-21 21:31) [9]

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


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


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

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


 
JJ ©   (2005-09-21 21:51) [11]

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


 
Nick Denry ©   (2005-09-21 22:07) [12]

Anton_K ©   (21.09.05 21:31) [9]

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

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

JJ ©   (21.09.05 21:51) [11]

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


 
Anton_K ©   (2005-09-21 22:15) [13]


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

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


 
Nick Denry ©   (2005-09-21 22:35) [14]

Anton_K ©   (21.09.05 22:15) [13]

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

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

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


 
Anton_K ©   (2005-09-21 22:37) [15]


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

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


 
Nick Denry ©   (2005-09-21 22:54) [16]

Anton_K ©   (21.09.05 22:37) [15]

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


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


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


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


 
Poirot ©   (2005-09-22 12:27) [18]

JJ ©   (21.09.05 21:51) [11]

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



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.046 c
2-1127104746
nik7777
2005-09-19 08:39
2005.10.16
Создать текстовый файл


1-1127887104
OlegM
2005-09-28 09:58
2005.10.16
Не происходит смена курсора


3-1125669985
jeka_t
2005-09-02 18:06
2005.10.16
Как в запросе указать условие отбора по дате с временем...


6-1119435840
Drema
2005-06-22 14:24
2005.10.16
Twebbrowser и события в нем


2-1126957033
AlexLines
2005-09-17 15:37
2005.10.16
Относительные пути и win98