![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Размер программы в памяти [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} имеет отношение "к размеру программы в памяти"?