Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2015, 00:05   #11
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
так вы бы показали как, а то не понятно про что вообще разговор
я ждал первого заинтересованного.
короче...
1. создай в delphi XEx пустой проект.
2. скомпили его. посмотри размер ехе.
3. закрой проект (file -> close all).
4. удали из папки проекта подпапку win32 и файл "имя_проекта.dproj".
5. открой теперь в delphi файл "имя_проекта.dpr".
6. delphi конвертнёт его в новый формат и сообщит об этом.
7. скомпили проект.
8. посмотри в папку проекта и охреней от размера "имя_проекта.ехе".

Наткнулся я на эту фишку, когда портировал вчера на работе утилитку с d7 на dxe7.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 01.05.2015, 02:22   #12
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Что имеется в виду под пустым проектом? Пустой проект Win32 или пустой проект VCL? У Delphi с первой версии неотключаемая "умная сборка", унаследованная еще от Turbo Pascal, так что сам по себе он никакой лишней информации в exe-файл не добавляет.

Это в VCL архитектура такая, что в ней куча перестраховочного и умолчательного кода, который на деле может и не использоваться, а линкуется, поскольку объекты создаются в разделе инициализации модулей. Из-за этого uses Forms добавит к проекту сразу 200-400 КБ, даже если в нем не будет ни одной формы. Если же создать форму, в коде будут ссылки для чтения DFM, что еще метр прибавит, плюс расширенная RTTI, которая появилась вместе с обобщениями (не уверен, что именно, в XE).

Еще порядка 300 КБ приходится на... значок! Умолчательная иконка Embarcadero содержит полноцветные значки вплоть до 256x256, а они тоже немаленькие. Сжатие не используется, хотя оно появилось еще в Висте.

Вот так и набегает. Где-то 10-20% из любого VCL-проекта можно выкинуть ключом {$WEAKLINKRTTI} с параметрами и установкой флагов в exe-шнике, которые действуют на компилятор (в Delphi 6/7 не действуют).
Код:

{$IFNDEF DEBUG}
  {$WEAKLINKRTTI ON}
  {$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])}
{$ENDIF}

uses
  Windows;

{$IFNDEF DEBUG}
  {$SetPEFlags
    IMAGE_FILE_RELOCS_STRIPPED or
    IMAGE_FILE_DEBUG_STRIPPED or
    IMAGE_FILE_LINE_NUMS_STRIPPED or
    IMAGE_FILE_LOCAL_SYMS_STRIPPED}
{$ENDIF}
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 01.05.2015, 02:48   #13
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
думаешь, это снизило бы размер на 80%?
попробуй сам. о результатах сообщи, плизЪ!
я подожду...
Не вопрос!
Debug
001.PNG
Release
002.PNG
Компилировал "пустой" проект. Все настройки по умолчанию. Даже специальную папку для этого заводить не стал.
Просто переключил Debug/Release

Последний раз редактировалось Streletz; 01.05.2015 в 02:50.
Streletz вне форума Ответить с цитированием
Старый 01.05.2015, 02:48   #14
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Что имеется в виду под пустым проектом?
см. скриншот.

интересно, возможно ли ещё без ущерба сократить размер? –80% – это сильно гут, но хотелось бы выжать из ехе всё, что в принципе возможно.
а посему прОшу, товарищи: экспериментируйте дальше с моей подачи!

Цитата:
Компилировал "пустой" проект. Все настройки по умолчанию. Даже специальную папку для этого заводить не стал.
не смог найти переключатель debug/release! комбобокс в свойствах проекта эффекту не даёт.
Изображения
Тип файла: png 13.png (33.0 Кб, 260 просмотров)
Тип файла: png 14.png (22.3 Кб, 173 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось Stilet; 01.05.2015 в 09:17.
min@y™ вне форума Ответить с цитированием
Старый 01.05.2015, 03:02   #15
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
см. скриншот.
Чей скриншот?

Мне экспериментировать незачем, я уже все написал. С описанными мной ключами и полной перекомпиляцией пустой проект с VCL-формой в XE2 дает порядка 1,2 МБ, после замены значка -- 900 КБ. Это предел.

По сравнению с Delphi 6/7 код RTL стал больше, и мои проекты на CoreLite (без VCL) получаются в 1,5-2 раза больше, чем из-под Delphi 6: типа 100 КБ вместо 60 КБ. Это тоже реальная метрика, я по map-файлам слежу.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 01.05.2015, 03:07   #16
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
а посему прОшу, товарищи: экспериментируйте дальше с моей подачи!
А, смысл?
Цитата:
Сообщение от min@y™ Посмотреть сообщение
не смог найти переключатель debug/release!
Окно Project Manager -> Build Configurations.
Цитата:
Сообщение от min@y™ Посмотреть сообщение
комбобокс в свойствах проекта эффекту не даёт.
И не даст. Он для выбора конфигурации, которую нужно настроить с помощью окна свойств проекта.
Streletz вне форума Ответить с цитированием
Старый 01.05.2015, 03:10   #17
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Окно Project Manager -> Build Configurations.
о! ну нихрена себе квест!
спасибо.

прибейте топик кто-нибудь.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 01.05.2015 в 03:13.
min@y™ вне форума Ответить с цитированием
Старый 01.05.2015, 05:05   #18
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
прибейте топик кто-нибудь.
Зачем прибивать-то? Я что, зря, что ли про оптимизацию уже после выставления конфигурации писал? Совсем не цените, уйду от вас.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 01.05.2015, 09:17   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
прибейте топик кто-нибудь.
Жадина ты.
Пусть и другим будет в какчестве пояснения как да чего.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.05.2015, 10:02   #20
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,871
По умолчанию

а зачем вам уменьшать размеры проектов и программ? у вас же жёсткие диски не 50 Мб, а по 750-1000 Гигов. ради чего вам урезать размеры приложений?
или так, для себя. ради оптимизации?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi XE - размер EXE 5cek Общие вопросы Delphi 19 26.05.2014 18:01
Размер exe файла vovik93 C# (си шарп) 3 26.06.2012 11:32
Как в готовом проекте изменить имя выходного файла программы? DeveloPerchik Общие вопросы Delphi 1 24.05.2012 15:38
Извлечение всех exe-файла из запороленного exe -файла Memfis1992 Общие вопросы Delphi 1 27.10.2010 03:06
Как в Delphi определить размер файла? Nomad Помощь студентам 7 10.08.2010 08:33