Главная страница
    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.047 c
3-1125991945
Tonich
2005-09-06 11:32
2005.10.16
Копировать Select из одной таблицы в другую


14-1127569018
GanibalLector
2005-09-24 17:36
2005.10.16
ОБЗОР решений


14-1127354105
SPeller
2005-09-22 05:55
2005.10.16
Правовой вопрос


1-1127790985
HelpMy
2005-09-27 07:16
2005.10.16
Service & DLL


1-1127331084
Ezh
2005-09-21 23:31
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский