Сейчас на форуме: jinoweb (+6 невидимых) |
eXeL@B —› Программирование —› Delphi 10 Сompilation |
Посл.ответ | Сообщение |
|
Создано: 29 августа 2018 12:59 · Личное сообщение · #1 Всем привет. Раннее написал DLL-ку на делфях. В Delphi 6 (с отрубанием обработчиков исключений и т.д.) DLL-ка компилится размером ~100 кб. Сегодня поставил Delphi 10 (Tokio), после компиляции в ней, размер вырос до 1 мегабайта. Закинул в отладчик, в ней куча "мусора" по мимо рабочего кода. Перерыл Delphi 10 на предмет "вырубания" этого "мусорного" кода. Так ничего путного не получилось, пытался отключать пакеты, которые не использую, результат тот же - 1 метр. Вопрос к господам, которые активно пишут на дельфях и особенно последних версий. Как максимально оптимизировать компилируемый файл? Т.е. какие конкретные манипуляции необходимо проделать в дельфях, чтобы максимально уменьшить размер? P.S. Конечно же лазил в Google, много пишут, но никакой конкретики... типа используйте UPX или пишите на Win API. Но по настройкам самого Delphi, по данному вопросу, ничего конкретного. Заранее премного благодарен за советы |
|
Создано: 29 августа 2018 13:25 · Личное сообщение · #2 |
|
Создано: 29 августа 2018 13:33 · Поправил: BlackCode · Личное сообщение · #3 ajax Дебаг инфы нет, конечно. P.S. Для компиляции нужен пакет EasyCompressionLibrary eab1_29.08.2018_EXELAB.rU.tgz - MyECL.rar |
|
Создано: 29 августа 2018 13:56 · Личное сообщение · #4 |
|
Создано: 29 августа 2018 14:06 · Личное сообщение · #5 |
|
Создано: 29 августа 2018 14:15 · Поправил: Kindly · Личное сообщение · #6 |
|
Создано: 29 августа 2018 16:04 · Личное сообщение · #7 |
|
Создано: 29 августа 2018 20:31 · Поправил: reverser · Личное сообщение · #8 Unicode Inno Setup: We compile all of Inno Setup's projects under Delphi 2009 with Update 3. Newer Delphi versions should also work but will lead to significantly larger files. Non Unicode Inno Setup: We compile all of Inno Setup's projects under Delphi 2.01, with the exception of Compil32 which is compiled under Delphi 3.02 (for the better Far East character set support), and Inno Setup Preprocessor's ISPP which is compiled under Delphi 7. Delphi 2.01 is used for the main projects because its VCL has a significantly smaller code size footprint than the later versions. |
|
Создано: 29 августа 2018 20:32 · Личное сообщение · #9 sendersu пишет: вот почему автор TC (Total Commander) до сих пор сидит на древней дельфе (толи 6ка толи еще бородатее) сильно бородатее - там delphi2 борода такой длинны, что ее даже современный IDR не может загрузить, а когда то мог | Сообщение посчитали полезным: sendersu |
|
Создано: 29 августа 2018 20:53 · Личное сообщение · #10 BlackCode попробуй компильнуть лазарусом. http://www.lazarus-ide.org/ | Сообщение посчитали полезным: BlackCode |
|
Создано: 29 августа 2018 22:36 · Личное сообщение · #11 |
|
Создано: 30 августа 2018 09:10 · Поправил: ajax · Личное сообщение · #12 |
|
Создано: 30 августа 2018 11:04 · Личное сообщение · #13 |
|
Создано: 30 августа 2018 14:45 · Поправил: 2nd · Личное сообщение · #14 ajax пишет: не верю. x32 не менее 7 Старое интервью Гислера (речь про x86): Вопрос: Широко известный факт, что вы до сих пор пишете свой файл-менеджер на допотопном Delphi 2. С чем это связано? Ответ: Я являюсь обладателем лицензионных версий всех последних Delphi, поэтому я достаточно хорошо представляю себе их возможности. Но дело тут вот в чем: компиляция exe-файла в Delphi 2 дает на выходе файл ощутимо меньший по размеру, чем, например, в Delphi 7. Кроме того, тестирование показывает, что exe-шник из-под Delphi 2 работает заметно быстрее, чем его полный аналог выпущенный компилятором Delphi 7. Я сталкиваюсь с тем, что люди часто удивляются, что Total по-прежнему работает очень быстро - я собираюсь сохранить эту его особенность, и, отчасти, секрет тут в правильно выбранном компиляторе. Добавлю, что кроме этого, Delphi 2 генерирует очень универсальный код, например, с полной поддержкой 16-битовых приложений или Windows 95/98 - у меня до сих пор хватает таких клиентов. В тоже самое время, TC прекрасно себя чувствует и в Windows 7. | Сообщение посчитали полезным: GroundHog, BlackCode |
|
Создано: 30 августа 2018 15:30 · Личное сообщение · #15 BlackCode пишет: Но по настройкам самого Delphi, по данному вопросу, ничего конкретного. Дело вовсе не в настройках, а в разжиревшем VCL. Delphi не умеет правильно оптимизировать и включает в код юниты целиком (авось понадобится). Отсюда и жирный размер. Можешь попробовать скомпилить один и тот же дефолтный проект в D6 и D10. Разница в размере на лицо. Настройки не помогут. Из личного опыта для оптимизации не подключаю модули из поставки целиком, а в отдельный юнит копирую из них только то, чем реально пользуюсь. Например мне нужен FileExists из SysUtils. Лезем в SysUtils, копируем оттуда FileExists и всё, от чего он зависит и пихаем в отдельный юнит. Подключаем вместо SysUtils НашМодуль. Пробуем скомпилить - видим разницу. Другого пути оптимизации, к сожалению нет. Также стоит учесть, что чем старше версия компилятора, там жирнее самый "маленький" EXE/DLL. Надеюсь, доступно разъяснил. | Сообщение посчитали полезным: sefkrd, BlackCode, GroundHog, TryAga1n |
|
Создано: 30 августа 2018 15:45 · Личное сообщение · #16 |
|
Создано: 30 августа 2018 17:02 · Личное сообщение · #17 2nd пишет: Delphi 2 генерирует очень универсальный код, например, с полной поддержкой 16-битовых приложений или Windows 95/98 - у меня до сих пор хватает таких клиентов. В тоже самое время, TC прекрасно себя чувствует и в Windows 7. про 16-32 бит ясно, но внимание вопрос - как древнейшая Д2 генерит 64 бит код? ведь TC есть не только 16 и 32 бит но и 64 с недавнего времени... |
|
Создано: 30 августа 2018 17:55 · Поправил: BlackCode · Личное сообщение · #18 |
|
Создано: 30 августа 2018 21:10 · Личное сообщение · #19 |
|
Создано: 30 августа 2018 21:31 · Поправил: 2nd · Личное сообщение · #20 sendersu пишет: про 16-32 бит ясно, но внимание вопрос ответ был там же: "Старое интервью Гислера (речь про x86):" про 64 бита, конечно, d2 не при делах. из того же старого интервью: -------------------------------------------------- Вопрос: - Итак, как я понял, следующая революционная 8-я версия - это переход на Lazarus и первая полноценная 64-битная версия TC (вместе с 32-битной)? Ответ: - Во-первых, разработка 32-битной версии TC останется на Delphi 2. Во-вторых, насчет инструмента разработки 64-битной версии пока я точно не определился, но движусь в направлении Lazarus. Как результат этих усилий - с этого лета я уже успешно компилирую весь проект TC на Lazarus ---------------------------------- |
eXeL@B —› Программирование —› Delphi 10 Сompilation |