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

Вниз

В чём разница?   Найти похожие ветки 

 
Макс Реалов   (2004-02-03 18:23) [0]

Здравствуйте, уважаемые.
Есть такой вопрос.
У меня маленькая программка. В ней:

...
uses
Windows, Messages;
...
function bChangeTime(): boolean;
var
pSysTime: TSystemTime;
begin
Result:= False;
GetLocalTime(pSysTime);
if (pSysTime.wHour > 10) and (pSysTime.wHour < 20) and
(not(pSysTime.wDayOfWeek in [0,6])) then
Result:= True;
end;

Если компилю так, то exe-файл получается 8.50 kb (прога у меня без форм).
А если так делаю, то exe-файл получается 14.5 kb:

function bChangeTime(): boolean;
var
pSysTime: PSystemTime;
begin
Result:= False;
New(pSysTime);
GetLocalTime(pSysTime^);
if (pSysTime^.wHour > 10) and (pSysTime^.wHour < 20) and
(not(pSysTime^.wDayOfWeek in [0,6])) then
Result:= True;
Dispose(pSysTime);
end;

В обоих случаях размер, занимаемой памяти программой одинаков (судя по Task Manager"у).
Странно, ведь при объявлении: pSysTime: TSystemTime; место для pSysTime распределяется в стеке, а при: pSysTime: PSystemTime; в куче распределяетя и в ней же потом уничтожается (New/Dispose).
А при сборке паскалевским компилятором в объектник компилятся все ф-ии, которые присутствуют в заголовочных файлов или реально приминяемые?
Где можно подробную спецификацию по компилятору, используемому в Delphi 6.0 прочитать?
В чём дело?


 
clickmaker   (2004-02-03 18:36) [1]


> А при сборке паскалевским компилятором в объектник компилятся
> все ф-ии, которые присутствуют в заголовочных файлов или
> реально приминяемые?

второе


 
Макс Реалов   (2004-02-03 18:58) [2]

>> clickmaker © (03.02.04 18:36) [1] :
Ага, а 350 kb мне фея добавляет, когда я просто просисываю модуль ExtCtrls в uses, вообще не используя НИОДНУ ф-ию и не одного типа из ExtCtrls?
Exe-шничек то растёт :)
Так что, похоже компилит всё, а линкует только то, что используется.


 
clickmaker   (2004-02-03 19:08) [3]

Ну и в чем проблема? На размер экзешника влияет только линковка


 
Плохиш   (2004-02-03 19:08) [4]


> Так что, похоже компилит всё, а линкует только то, что используется

Хороший орех получается :-))


 
VMcL   (2004-02-03 19:08) [5]

>>Макс Реалов (03.02.04 18:58) [2]

>Ага, а 350 kb мне фея добавляет, когда я просто просисываю модуль ExtCtrls в uses

initialization
finalization


 
Макс Реалов   (2004-02-03 19:32) [6]

>>VMcL © (03.02.04 19:08) [5]:
не понял. При чём тут это?


 
Anatoly Podgoretsky   (2004-02-03 19:49) [7]

А при том, что используется.


 
Макс Реалов   (2004-02-03 19:58) [8]

>>Anatoly Podgoretsky © (03.02.04 19:49) [7]:
не понял. Если можно, по подробнее.
Я всегда думал, что в Паскале initialization/finalization для инициализации/деинициализации переменных используется. Разве нет?


 
VideoLord   (2004-02-03 20:29) [9]

Там могут еще и какие-нить функции вызываться, которые потом будут тебе в экзешник линковаться


 
VMcL   (2004-02-03 20:45) [10]

>>Макс Реалов (03.02.04 19:58) [8]

см. [9] + если создается экземпляр класса при инициализации, то в exe-шник войдут не только вызываемые, но и все виртуальные методы этого класса.


 
Макс Реалов   (2004-02-04 11:14) [11]

А если я НИЧЕГО не создаю и не вызываю!!! И что это за "какие-нить функции"???
Может мне кто-нибудь чётко объяснить КАК происходит сборка и линковка в Delphi и от чего зависит размер получаемого exe-ка? То что написано в help"е я и так знал, но это не объясняет некоторых вещей.


 
KosilkA   (2004-02-04 14:36) [12]

размер файла при минимальной программе вырастет с 8 до 14 килобайт при любом использовании string. Проверено.


 
Макс Реалов   (2004-02-04 14:53) [13]

Удалено модератором
Примечание: Мат даже замаскированый все равно остается матом


 
KosilkA   (2004-02-04 14:58) [14]


> Макс Реалов (04.02.04 14:53) [13]

да , сорри я не вдумался в твой код. но абсолютно такая же ситуация у меня была при использовании/неиспользовании string.


 
SPeller   (2004-02-04 15:43) [15]


> initialization
> finalization

+ все описания классов. Методы не линкуются, а вот описания на размер действуют. Проверено на личном опыте. Если в uses приписать модуль, в котором будет пара-тройка классов, но ничего использоваться не будет, то размер ехе всё-равно вырастет.


 
ламер   (2004-02-04 16:00) [16]

Удалено модератором
Примечание: 3 дня RO за мат


 
Тимохов   (2004-02-04 16:03) [17]


> ламер (04.02.04 16:00) [16]

Ты то, что сюда влез?


 
VMcL   (2004-02-04 19:02) [18]

2 [15]
>Методы не линкуются

Смотря какие. См. [10].


 
jack128   (2004-02-04 19:23) [19]


> Какой String нафиг??? Где у меня string"и???
Ну может KosilkA © и прав. Дело может быть не в строках, как таковых, а в дельфийском менеджере памяти, копорый ты пристегиваешь используя GetMem/FreeMem. Но может это и не так, поскольку где то на форуме слышал, что менеджер памяти входит в ЛЮБОЙ проект на дельфи.


 
Cobalt   (2004-02-04 21:01) [20]

Можно ещё сравнить ассемблерный код (View->CPU) и увидеть - что добавляется.


 
noname123   (2004-02-07 15:15) [21]

"...где то на форуме слышал, что менеджер памяти входит в ЛЮБОЙ проект на дельфи" - я плакаль :))))))))))


 
Igor_thief   (2004-02-07 15:33) [22]

Cobalt © (04.02.04 21:01) [20]
Вот это точно надо сделать, иначе ничего не разберете!


 
Igor_thief   (2004-02-07 15:37) [23]

Да, я вот надыбал одну рассылку, тема которой "Оптимизация Дельфи приложений. Шаг за шагом". Может задать автору этой рассылки этот вопросик?


 
DiamondShark   (2004-02-07 17:08) [24]


> Макс Реалов (03.02.04 18:23)


> KosilkA © (04.02.04 14:58) [14]

Менеджер памяти прилинковывается.


 
Игорь Шевченко   (2004-02-07 23:05) [25]

Откройте unit SysInit.pas и посмотрите, что там линкуется. Проще, чем спорить



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

Форум: "Потрепаться";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.014 c
6-94063
Alex-21
2003-12-22 18:31
2004.02.29
UDP


1-93853
Plt
2004-02-16 17:18
2004.02.29
Высота Popup


1-93872
Ricko
2004-02-16 11:49
2004.02.29
АвтоСкролл в Listview


7-94218
nik4543
2003-12-12 05:27
2004.02.29
регулировки яркости моника


11-93825
Кладов
2003-06-06 11:41
2004.02.29
FPC: подключение ресурсов Windows





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский