Опять про размер проги

  • Автор темы Автор темы Баламут
  • Дата начала Дата начала
Б

Баламут

Привет всем!

Впервые на вашем форуме. Неплохо. Такой вопрос.

При обычном создании приложения с двумя формами размер exe-шника получился около 400М. Я написал MDI-приложение, где дочерние формы хранятся в DLL. При этом размер проги стал меньше 30К! А почему? Создается такое впечатление, что много остается за бортом. А как тогда сказать компилятору, чтобы все ложил в кучу? Вроде давно пишу на Делфи, но вот с настройками компилятора как-то не заморачивался. Видимо зря. Пишу на Delphi 6.
 
Рзамер очень сильно зависит от объёма подключённых модулей и опций компилятора.

Также попробуйте упаковывать полученный исполняемый файл или ДЛЛ с помощью паковщиков, что значительно снизит их размер.
 
Э, нет! Меня как раз интересует, почему так резко снизился размер проги. А использовать упаковщики вообще сомнительное счастье. В ОЗУ -то программа все-равно примет свой начальный размер. А на диске сейчас жалеть место даже неудобно как-то :lol: . А вот про настройки компилятора хотелось бы по-подробнее, если можно. Уж больно не хочется, что бы на чужой машине прога стала ругаться, что ей чего-то не хватает.
 
Баламут
Как только в проект добавляете модуль Forms, так сразу размер программы увеличивается на 300 kB, причем не имеет значение dll-ка это, или консоль (хотя зачем в консоли Forms?). Выход: окна создавать на API, но очень гиморно. Еще с помощью директив компилятора можно в том же Forms сделать, чтобы компилировалось только то что вам нужно, но опять таки это очень гиморно, да и не гарантия, что это корректно получится (кстати такой способ реализован в кмопонентах KOL).
 
Похоже я не совсем ясно сформулировал вопрос. Меня не удивляет размер проги в 300K. Я прекрасно знаю, что это нормально. Вопрос как раз об обратном эффекте. Почему размер уменьшился до 30 килобайт? Форма есть как в экзешнике, так и в DLL. Я точно знаю, что где-то в настройках компилятору можно указать статическое или динамическое использование библиотек, т.е. линковать их в исполняемый файл или нет. Настроек я вроде не менял, но все-таки хочется знать, где это можно сделать.
 
Статическое или динамическое линкование никак не скажется на размере...

Вам уже совсершено верно указал zubr, чтразмер очень сильно зависит от количества включённых модулей... ищите что Вы включали и отключили ...
 
Для: Баламут
Создаём новый проект. Компилируем - 370 176 байт. Projects -> Options -> Packages и пстрынькаем на Build with runtime packages - размер 16 896 байт. Зависит от того, что вставленно в поле, но надо это всё таскать с прогой.
 
Вот теперь все нормально. Спаибо. Правда возникли другие проблемы, но разберемся! ;)
 
<!--QuoteBegin-????+28:07:2005, 16:34 -->
<span class="vbquote">(???? @ 28:07:2005, 16:34 )</span><!--QuoteEBegin-->Projects -> Options -> Packages и пстрынькаем на Build with runtime packages
[snapback]22691" rel="nofollow" target="_blank[/snapback]​
[/quote] Ну и что? Теперь прога не запустится на компе, на катором не установлена Дельфя. Советчики... :P
 
Почему это не запустится? Достаточно просто с собой взять требуемые пэкэджи и всё!
 
И в итоге общий размер проги, со всеми пакетами будет завен тем же 300к
 
Это да .. но если у Вам есть несколько прогграмм использующих одни и теже пакеты .. то в итоге можно здорово сэкономить на суммарном объёме...
 
Не помню, как в Дельфях, в Билдере еще одна фича присутствует:
[Project->Options->Linker->Linking->Use dinamik RTL] (runtime library)

Для: Barmutik
Также попробуйте упаковывать полученный исполняемый файл или ДЛЛ с помощью паковщиков, что значительно снизит их размер.
Можно поподробней? Я ж так понял, это не про RAR?
 
Конечно, паковать можно. Например тем же ASPack. Вот только смысл? На диске программа действительно будет занимать меньше места. Но в ОЗУ она же все равно будет распакована и займет прежний размер!
 
Но если Вам надо сократить размер дистрибутива, для скачки к примеру, то паковщики это отличный выход!
 
KOL тут уже упоминали, почему бы его не использовать? Если "давно пишу на Делфи" - грех было не попробовать.
 
Любые сторонние библиотеки увеличивают процент нестабильной работы программы в геометрической прогрессии .. исключая конечно самые массовые и хорошо оттестированные.
 
<!--QuoteBegin-mike.dld+17:08:2005, 14:07 -->
<span class="vbquote">(mike.dld @ 17:08:2005, 14:07 )</span><!--QuoteEBegin-->KOL тут уже упоминали, почему бы его не использовать? Если "давно пишу на Делфи" - грех было не попробовать.
[snapback]23601" rel="nofollow" target="_blank[/snapback]​
[/quote] Ну я давно пишу на Delphi. Но от КОЛ отказываюсь. Почему, уже сказал Barmutik. Так что лучший выриант уменшить размер проги - это отказаться от VCL и написать ее на чистом WinAPI. То, что занимало 500 Мб, будет занимать 30.
 
Тогда уж не зачем писать на Delphi.... уж лучше на С++
 
Писать на С?!! Нет уж, увольте. По мне так проще на ассемблере. По крайней мере код прост и понятен. Нет, писать на С++ по DOS было конечно просто здорово. Но после того, за за реализацию компилятора взялись мелкомягкие... Использовать API все-таки лучше в связке с асмом. И в обратном меня уже никто не переубедит.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab