|
Модераторы: Snowy, MetalFan, bems, Poseidon |
|
StayAtHome |
|
|||
Домосед Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: нет Всего: 16 |
Пытаюсь скомпилировать свою старую DLL (плагин к Total Commander) в 64разрядный вариант. Для этого попробовал Embarcadero Rad Studio XE2. Размер при компиляции в Delphi 7 ~570 КБ, при компиляции в XE2 -- 2,4 МБ ! Это "нормально" или я где-то перемудрил? Если не нормально, то куда копать?
|
|||
|
||||
DarkProg |
|
|||
Законченный романтик Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Не знаю что за плагин, но IMHO много, хотя если вы подключили много базовых библиотек, которые потянули за собой чёрти сколько всего, то размерчик адекватен.
А делали полный билд в режиме релиза? -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
StayAtHome |
|
|||
Домосед Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: нет Всего: 16 |
Делал. Разница не заметна особо. Особо ничего не подключал, сторонние библиотеки не юзал -- 1 свой компонент и все.
|
|||
|
||||
XperT |
|
|||
Опытный Профиль Группа: Участник Сообщений: 269 Регистрация: 19.8.2006 Репутация: нет Всего: 4 |
Покажите uses длл-ки и своего компонента
|
|||
|
||||
Keeper89 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Пути - почистить Uses (CnPack это умеет, например) и сжать UPXом.
|
|||
|
||||
StayAtHome |
|
|||
Домосед Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: нет Всего: 16 |
|
|||
|
||||
StayAtHome |
|
|||
Домосед Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: нет Всего: 16 |
CNPack мало что почистил из Uses -- размер не изменился
|
|||
|
||||
XperT |
|
|||
Опытный Профиль Группа: Участник Сообщений: 269 Регистрация: 19.8.2006 Репутация: нет Всего: 4 |
Зачем в дллке Forms, Dialogs, Messages, XPMan? А так же сомнительна необходимость ClipBrd.
Скомпилировал пустой проект под делфи 2010 (это так, которая уже с юникодом) используя все эти uses и получил 805 Кб. К сожалению ХЕ2 под рукой нету, но мне кажется, что больше 1,5 Мб быть не должно. |
|||
|
||||
northener |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
А надо было по крайней мере под ХЕ, имхо. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Keeper89, пакеры не нужны
-------------------- Обижено школьников: 8 |
|||
|
||||
Keeper89 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
bems, почему?
|
|||
|
||||
StayAtHome |
|
|||
Домосед Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: нет Всего: 16 |
Это ж не просто DLL-ка, а плагин для TC. Он отображает свою форму с контролами. |
|||
|
||||
Snowy |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
||||
|
||||
StayAtHome |
|
|||
Домосед Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: нет Всего: 16 |
Печально. Есть какие-то способы борьбы с этим, кроме как переход на чистый WinAPI ? В упаковке -- особого смысла не вижу. Или можно получить 64-разрядную DLL на менее "пухлых" версиях Delphi ? Это сообщение отредактировал(а) StayAtHome - 5.6.2012, 13:55 |
|||
|
||||
Keeper89 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
StayAtHome, нет, нельзя. А почему размер так критичен? И почему упаковать - не вариант?
|
|||
|
||||
StayAtHome |
|
|||
Домосед Профиль Группа: Участник Сообщений: 456 Регистрация: 26.1.2004 Где: Украина Репутация: нет Всего: 16 |
Keeper89, критична скорость загрузки плагина, считаю что грузить 2,5 МБ будет дольше чем 0, 5 МБ. Да, поскольку это DLL вероятно повторный вызов будет уже без посторной загрузки (вероятно т.к. не сильно искушен в архитектуре TC). Но такой рост размера меня лично сильно шокирует Аж охота пользоваться XE2 пропала.
Упаковать -- выиграем в размере, проиграем в скорости распаковки. Смысл? |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Не факт. Винда обычно грузит только то что ей нужно. Обычно делфовый экзешник набивается под завязку всяким лутом типа RTTI или ресурсов. Если сходу не грузить все формы в память, то загрузка будет столь же быстрой как и раньше. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Snowy |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
dll может быть и 300 метров - в память он грузиться целиком не станет.
Вот если он упакован пакером, тогда станет. Так что не думаю, что размер критичен. Если его заархивировать, то получится всего полметра. Для инета не критично. Для винта вообще не заметно. Я бы не заморачивался бы на эту тему. |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Вот кстати одна из причин роста монстраобразности исполняемых модулей
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
MetalFan |
|
|||
Аццкий Сотона Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
Alexeis, ухты...
-------------------- There are always someone smarter than you... |
|||
|
||||
northener |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
-------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
MetalFan |
|
|||
Аццкий Сотона Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
northener, да я просто сам таким не пользуюсь... примеры видел, но видать забыл уже, что такое возможно.
А практическое применение такому где может быть? -------------------- There are always someone smarter than you... |
|||
|
||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
потому что это даёт выигрыш только в размере файла на диске, а там не важно сколько занимает дллка. При загрузке библиотеки она будет распакована в память, что во-первых означает что в памяти занимать она будет не меньше чем неупакованная, а во-вторых распаковка занимает время, и это значит что малый размер файла не даёт выигрыша в скорости загрузки. Ну и кроме того если в случае неупакованной длл механизм виртуальной памяти позволял при "загрузке" библиотеки реально загружать в оперативу только те страницы что используются в данный момент, то в случае упакованной распаковка идет сразу в оперативу Это сообщение отредактировал(а) bems - 6.6.2012, 08:46 -------------------- Обижено школьников: 8 |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Ну одно из применений может быть в купе с компилятором делфей. Самомодифицирующаяся программа. Внутри программы создал код bpl, загрзузил и заюзал, то что только что написал. Можно также представить себе сиситему плагинов, где в xml файле будет описано содержимое плагина (классы и функции), а также несколько вариантов конфигураций, в виде возможных значений параметров (кстати о плагинах). В любом случае это неплохая альтернатива COM. Еще неплохой пример. Браузер грузит html страничку, находит тег embed / object и используя метаинформацию из него определяет кто должен рендерить содержимое и какие данные нужно передать объекту для правильной работы. Вспоминаем типичную схему разработки классов на COM. Написали класс, к нему максимально полный интерфейс. Через пару месяцев возникла необходимость расширить его. Что делаем? Пишем новый дополняющий старый. Потом 3й, 4й 5й и получаем форменное безобразие. С другой стороны далеко не всегда позднее связывание требует максимального быстродействия. Можно сочетать интерфейсы с рефлексией. Например, там где требуется максимальное быстродействие используем COM интерфейсы, которые получаем из объектов, которые были созданы и связаны с основной программой по их строковому описанию. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |