Подписка

Проекты

Сборник идей для разработок в Delphi и использования их в Интернет. Участвуй в работе коллективного разума!

Google API в Delphi - проект с открытым исходным кодом.


А тут я коплю на лицензию Delphi 2011. Сумма пожертвования не фиксирована.

Друзья блога

Блоги и сообщества

DelphiFeeds.ru - Все Delphi-блоги Рунета О раскрутке блога по программированию Сообщество умных людей VR-Online.RU Бесплатный журнал для программистов и всех, кто интересуется IT Статьи и уроки по Delphi Статьи по Delphi

Счётчики


Анализ веб сайтов

Рейтинг блогов




Система Orphus

  • 11Nov

    Итак, выдалась всё-таки свободная минутка и я решил немного углубить свои знания в работе с Lazarus. Если учесть то обстоятельство, что в скором времени мне как на домашнем ноутбуке, так и на рабочей машинке появится кто-то из семейства Linux (скорее всего одна из версий Ubuntu), то лишними знания по настройке и работе с Lazarus точно не будут.

    lazarus_logo_small

    Как я уже упоминал в одном из постов, Lazarus это IDE для Free Pascal и использоваться Лазарь может где угодно – хоть на Win32-системах, хоть в Linux. Отличительная черта – кроссплатформенность. Можно без особых заморочек компилировать проекты под любую ось (чего не скажешь о Delphi). Кроме того Lazarus на сегодняшний день является единственным живым проектом под Linux для работы с Pascal и проектами Delphi. Был ещё в свое время Kylix, но проект вроде бы успешно загнулся. ' '
    Поэтому, если Вы решите (или вас заставят) перейти с Windows на Linux и Вы захотите продолжать свои разработки в новой ОС, то – Lazarus Вам в руки :)
    Для начала оговорюсь где и как я проверял/тестировл проекты.
    В качестве ОС Linux был выбран “карманный” Slax с установленным пакетом Lazarus. Дополнительно, для сжатия исполняемых файлов использовался UPX.
    В Windows использовалась Delphi 2010.
    Проекты как в Lazarus так и в Delphi создавались абсолютно одинаковые – простая пустая форма с размером 300х300. Все подключенные по умолчанию модули были сохранены.

    1. Работа с Lazarus.

    Для новичков, думаю как и для меня, будет небольшой шок после компиляции пустой формы – размер исполняемого файла составил 18,864 Mb. Но, не стоитсразу бросать в Lazarus камни, лить помои на разработчиков и т.д. Не стоит забывать – мы имеем дело с кроссплатформенностью, а она, к соалению, требует жертв. Вот, что говорят по этому поводу сами разработчики (в моем вольном переводе):

    Бинарные файлы имеют большой размер, потому что они включают в себя большое количество отладочной информации, необходимой для использования GDB (GNU Debugger).
    Компилятор может удалить отладочную информацию из исполняемых файлов. Ранее, в версии компилятора 2.0.2. эта функция работала ошибочно, но начиная с версии 2.0.4. ошибка была исправлена.

    Раз есть возможность сократить бинарник – будем её использовать. Первое, с чего начнем – штатные средства, предоставляемые Lazarus.

    Первое, чем воспользуемся – утилитой strip, которая удаляет отладочную информацию из исполняемых файлов.
    Утилита расположена в папке lazarusppbini386-win32
    Открываем консоль, и записываем:

    cd lazarus
    strip --strip-all /файл

    Жмем Enter и проверяем, что получилось. Было 18,864 Mb стало 3,299 Mb. Неплохо, да? Но, думаю, мало кого устроит проект с пустой формой размеров в три с лишним мегабайта. Поэтому, переходим ко второй стадии оптимизации размера исполняемого файла в Lazarus – настройкам IDE.
    Открываем “Проект — Параметры компилятора — Код”
    Ставил галку напротив “Умное связывание (-CX)” (см. рисунок)

    Code optimization Lazarus

    Переходим на вкладку “Связывание” и убираем галку напротив “Выдать номера строк в ошибках времени исполнения (-gl)”
    Тут же ставим галку напротив “Вырезать символы из бинарника (-Xs)” – эту же самую функцию выполняет утилита strip.
    Тут же савим галку на “Умное связывание (-XX)”
    Жмем “Ок” и компилируем проект по новой.

    Code optimization Lazarus

    Результат – размер исполняемого файла 2,708 Mb. Сэкономили ещё 600 kb – неплохо.
    Больше из IDE выжать ничего собого не получится. Даже если и удасться что-либо скроить то экономия будет крайне незначительна.
    Переходим к последнему этапу оптимизации размера исполняемого файла – использование утилиты UPX. Использовать её элементарно – указываем в командной строке:

    UPX 

    жмем Enter и UPX сжимает файл на сколько это возможно.
    Итог работы UPX – размер исполняемого файла 771 kb. Таким образом, в результате небольших манипуляций с Lazarus и UPX нам удалось сократить размер исполняемого файла практически на 96%.
    Теперь посмотри как выглядит исполняемый файл от Lazarus на фоне Delphi.

    2. Сраниваем исполняемые файлы от Lazarus и Delphi.

    Создаем пустой проект в Delphi 2010, компилируем и в итоге получаем исполняемый файл размером 817 kb – чуть больше, чем оптимизированный и сжатый файл в Lazarus под Linux. Теперь осталось посмотреть, что станет с файлом после обработки UPX’ом.
    Сжимаем файл и смотрим размер – 284 kb. Чтобы представить себе всё вышесказанное, я составил небольшую гистограмму, демонстрирующую размеры исполняемых файлов Lazarus и Delphi:

    Lazarus vs Delphi

    Как итог, можно отметить, что Lazarus в плане размеров исполняемых файлов ничем не уступает Delphi. Не суть, что для достижения результата требуется немного поработать “напильником” – в принципе то вполне ожидаемо в Linux и далеко не критично. Однако, в отличие от Delphi Lazarus дает возможность создавать проекты, которые с лёгкостью можно будет пересобирать под любой ОС. Так что, переходя (пока частично) под Linux я нисколько не расстраиваюсь по поводу отсутствия под рукой родной Delphi – её на все 100 заменит Lazarus.

    Мой блог находят по следующим фразам

    -------------------------
    Если у Вас есть свой серьёзный бизнес не в Интернете, например магазин бытовой техники, то вам без сомнения пригодится Сканер штрих-кода Argox - отичный ручной сканер штрих-кодов с увеличеной дальностью действия.
    -------------------------

    Related posts:

    1. Linux, Lazarus и немного мыслей вслух.

    Автор Vlad в 1:37 am

    Метки: , , , , , , , , , ,

8 Comments

WP_Cloudy
  • Alexo пишет:

    Там где “После настройки IDE” какие настройки использовались?

  • Vlad пишет:

    После настройки компилятора в IDE – только работа утилитой UPX

  • Alexo пишет:

    Я хотел узнать для Delphi какие настройки использовались. У 2010 тоже можно уменьшить размер файла убрав новый RTTI.

  • Vlad пишет:

    По поводу нового RTTI сказать ничего не могу, т.к. толком с ним не разбирался. Могу посоветовать зайти на http://delphi2010.ru – там есть информация по RTTI

  • Alexo пишет:

    Я не про это.
    Размер Delphi сравнивался без натсройки среды или с настройкой если с настройкой то какими, а если без то почему?

  • Vlad пишет:

    Delphi 2010 не настраивал. Т.к. плотно с настройками не разбирался и, самое главное, в свое время я отказался от использования Лазаруса именно по причине громоздких исполняемых файлов. А теперь просто решил сравнить на сколько Лазарус отстает от Делфи по размерам исполняемых файлов. В принципе, никто не мешает ужимать exe-файлы тем же UPX или включать в проекты Delphi флаги на вырезку релоков

  • dan пишет:

    Delphi ИМХО детская среда.
    А как вы относитесь к новшеству Google – GO?)

  • Vlad пишет:

    насчёт “детская среда” ИМХО спорный момент..очень спорный

Ваш ответ

Внимание: Все комментарии модерируются, и это может вызвать задержку их публикации. Отправлять комментарий заново не требуется.

Пожалуйста, заключайте исходный код в тэги [code][/code].