Полная версия этой страницы:
Опять про размер проги
Баламут
27:07:2005, 04:27
Привет всем!
Впервые на вашем форуме. Неплохо. Такой вопрос.
При обычном создании приложения с двумя формами размер exe-шника получился около 400М. Я написал MDI-приложение, где дочерние формы хранятся в DLL. При этом размер проги стал меньше 30К! А почему? Создается такое впечатление, что много остается за бортом. А как тогда сказать компилятору, чтобы все ложил в кучу? Вроде давно пишу на Делфи, но вот с настройками компилятора как-то не заморачивался. Видимо зря. Пишу на Delphi 6.
Barmutik
27:07:2005, 06:59
Рзамер очень сильно зависит от объёма подключённых модулей и опций компилятора.
Также попробуйте упаковывать полученный исполняемый файл или ДЛЛ с помощью паковщиков, что значительно снизит их размер.
Баламут
27:07:2005, 22:49
Э, нет! Меня как раз интересует, почему так резко снизился размер проги. А использовать упаковщики вообще сомнительное счастье. В ОЗУ -то программа все-равно примет свой начальный размер. А на диске сейчас жалеть место даже неудобно как-то

. А вот про настройки компилятора хотелось бы по-подробнее, если можно. Уж больно не хочется, что бы на чужой машине прога стала ругаться, что ей чего-то не хватает.
Баламут
Как только в проект добавляете модуль Forms, так сразу размер программы увеличивается на 300 kB, причем не имеет значение dll-ка это, или консоль (хотя зачем в консоли Forms?). Выход: окна создавать на API, но очень гиморно. Еще с помощью директив компилятора можно в том же Forms сделать, чтобы компилировалось только то что вам нужно, но опять таки это очень гиморно, да и не гарантия, что это корректно получится (кстати такой способ реализован в кмопонентах KOL).
Баламут
28:07:2005, 05:36
Похоже я не совсем ясно сформулировал вопрос. Меня не удивляет размер проги в 300K. Я прекрасно знаю, что это нормально. Вопрос как раз об обратном эффекте. Почему размер уменьшился до 30 килобайт? Форма есть как в экзешнике, так и в DLL. Я точно знаю, что где-то в настройках компилятору можно указать статическое или динамическое использование библиотек, т.е. линковать их в исполняемый файл или нет. Настроек я вроде не менял, но все-таки хочется знать, где это можно сделать.
Barmutik
28:07:2005, 06:24
Статическое или динамическое линкование никак не скажется на размере...
Вам уже совсершено верно указал zubr, чтразмер очень сильно зависит от количества включённых модулей... ищите что Вы включали и отключили ...
Для: Баламут
Создаём новый проект. Компилируем - 370 176 байт. Projects -> Options -> Packages и пстрынькаем на Build with runtime packages - размер 16 896 байт. Зависит от того, что вставленно в поле, но надо это всё таскать с прогой.
Баламут
28:07:2005, 21:17
Вот теперь все нормально. Спаибо. Правда возникли другие проблемы, но разберемся!
Poseidon
13:08:2005, 23:07
Цитата(???? @ 28:07:2005, 16:34 )
Projects -> Options -> Packages и пстрынькаем на Build with runtime packages
Ну и что? Теперь прога не запустится на компе, на катором не установлена Дельфя. Советчики...
Barmutik
14:08:2005, 07:10
Почему это не запустится? Достаточно просто с собой взять требуемые пэкэджи и всё!
Poseidon
14:08:2005, 08:04
И в итоге общий размер проги, со всеми пакетами будет завен тем же 300к
Barmutik
14:08:2005, 08:31
Это да .. но если у Вам есть несколько прогграмм использующих одни и теже пакеты .. то в итоге можно здорово сэкономить на суммарном объёме...
Не помню, как в Дельфях, в Билдере еще одна фича присутствует:
[Project->Options->Linker->Linking->Use dinamik RTL] (runtime library)
Для:
Barmutik Цитата
Также попробуйте упаковывать полученный исполняемый файл или ДЛЛ с помощью паковщиков, что значительно снизит их размер.
Можно поподробней? Я ж так понял, это не про RAR?
Баламут
14:08:2005, 21:03
Конечно, паковать можно. Например тем же ASPack. Вот только смысл? На диске программа действительно будет занимать меньше места. Но в ОЗУ она же все равно будет распакована и займет прежний размер!
Barmutik
15:08:2005, 06:27
Но если Вам надо сократить размер дистрибутива, для скачки к примеру, то паковщики это отличный выход!
mike.dld
17:08:2005, 11:07
KOL тут уже упоминали, почему бы его не использовать? Если "давно пишу на Делфи" - грех было не попробовать.
Barmutik
17:08:2005, 11:49
Любые сторонние библиотеки увеличивают процент нестабильной работы программы в геометрической прогрессии .. исключая конечно самые массовые и хорошо оттестированные.
Poseidon
17:08:2005, 14:16
Цитата(mike.dld @ 17:08:2005, 14:07 )
KOL тут уже упоминали, почему бы его не использовать? Если "давно пишу на Делфи" - грех было не попробовать.
Ну я давно пишу на Delphi. Но от КОЛ отказываюсь. Почему, уже сказал
Barmutik. Так что лучший выриант уменшить размер проги - это отказаться от VCL и написать ее на чистом WinAPI. То, что занимало 500 Мб, будет занимать 30.
Barmutik
17:08:2005, 14:25
Тогда уж не зачем писать на Delphi.... уж лучше на С++
Баламут
17:08:2005, 20:56
Писать на С?!! Нет уж, увольте. По мне так проще на ассемблере. По крайней мере код прост и понятен. Нет, писать на С++ по DOS было конечно просто здорово. Но после того, за за реализацию компилятора взялись мелкомягкие... Использовать API все-таки лучше в связке с асмом. И в обратном меня уже никто не переубедит.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.