Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
2-1126642440
markon
2005-09-14 00:14
2005.10.16
Вызов функции, написанной в одном модуле из другого модуля


2-1126268045
TStas
2005-09-09 16:14
2005.10.16
Освобождение памяти.


3-1125460289
skiph
2005-08-31 07:51
2005.10.16
Обновление первых записей


6-1119600004
officeman
2005-06-24 12:00
2005.10.16
Вопрос про Сетевой-Доступ


14-1127752547
unknown
2005-09-26 20:35
2005.10.16
Подскажите реализацию )





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский