Как уменьшить размер собранного exe?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Как уменьшить размер собранного exe?

Сообщение Ambient » 29.09.2009 07:59:04

Attid писал(а):Ambient
если хочется одинакового вида в венде и в лине почему бы не взять MSE ?

А что, он уже сам научился отрисовывать виджеты?
Да и своеобразие библиотеки мешает
Аватара пользователя
Ambient
новенький
 
Сообщения: 24
Зарегистрирован: 27.09.2009 10:51:17

Re: Как уменьшить размер собранного exe?

Сообщение debi12345 » 29.09.2009 08:13:07

если хочется одинакового вида в венде и в лине почему бы не взять MSE ?

Во-во. Боялся показаться ярым лоббистом :)
Один фиг FPGUI (очень компактный сейчас) начнет быстро набирать размер, едва начав обрастать новыми фишками (особенно по части БД). Помню, Мартин за каждый байт MSE сражался - но теперь тема размера экзешников выплывает очень редко.
А что, он уже сам научился отрисовывать виджеты?

А кто/что до этого отрисовывал(о) ? Лазарус вызывался ?
Да и своеобразие библиотеки мешает

Извиняюсь, а FPGUI не своебразна ?
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как уменьшить размер собранного exe?

Сообщение скалогрыз » 29.09.2009 08:27:58

Максим писал(а):Простой пользователь из Китая, думаю, оспорит это мнение. :mrgreen:

ты не прав!
потому что ВСЕ китайские, корейские йероглифы, японские каны, и всякие другие восточные завитушки, вроде санскритских письм, арабских вязей и даже шрифт брайля. Всё это входит в 2-байтовый код WideString.

Помимо, языковых символов, в таблице присутствуют всякие "дополнительные" символы, и даже "серп и молот". Опять же всё вмещается в 2 байта на символ.

Миллионы символов понадобяться, когда мы встретим инопланетные цивилизации ;) Вообще, на тему уменьшения размера .exe это всё оффтоп.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Как уменьшить размер собранного exe?

Сообщение debi12345 » 29.09.2009 08:36:33

Простой пользователь из Китая, думаю, оспорит это мнение.

Можете быть уверены - эти пользователи только "за" упрощение.
Если кто и против - то это китайские софисты, ораторы, философы, филологи,..
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как уменьшить размер собранного exe?

Сообщение Ambient » 29.09.2009 08:44:16

debi12345 писал(а):Один фиг FPGUI (очень компактный сейчас) начнет быстро набирать размер, едва начав обрастать новыми фишками (особенно по части БД). Помню, Мартин за каждый байт MSE сражался - но теперь тема размера экзешников выплывает очень редко.

Я собирала проект на FPGUI с использованием лазаруса - экзешник получатся за 2м, если из командной строки собирать, то 800кб. Что-то лишнее тянется?
debi12345 писал(а):А кто/что до этого отрисовывал(о) ? Лазарус вызывался ?

Не знаю, не вникала, просто не так давно читала, что MSE использует нативные контролы, т.е. отрисовкой занимается система. Может я что-то спутала?
debi12345 писал(а):Извиняюсь, а FPGUI не своебразна ?

Пока нет, всё привычно и понятно )))

Кстати, а над использованием FPGUI в качестве интерфейса LCL кто-нибудь работает? А то после сборки лазарус просто закрывается без всяких сообщений.
Аватара пользователя
Ambient
новенький
 
Сообщения: 24
Зарегистрирован: 27.09.2009 10:51:17

Re: Как уменьшить размер собранного exe?

Сообщение debi12345 » 29.09.2009 09:13:47

Может я что-то спутала?

Ага, с точностью до-наоборот.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как уменьшить размер собранного exe?

Сообщение Odyssey » 29.09.2009 10:20:16

Ambient писал(а):Проект интересен, но так получилось, что я больше занимаюсь программированием, чем участвую в форумах и прояих подобных механизмах. Поэтому даже не знаю что это за Ньюсгроуп и с чем её едят (((

Это очень похоже на форум, где сообщения постятся через e-mail, а принимаются по протоколу nntp.
Thunderbird: Файл -> Создать -> Учетную запись, в мастере выбирается "Учетная запись новостей" вводится своё имя и e-mail, Имя сервера новостей: "opensoft.homeip.net", название - "fpGUI newsgroups" или на собственное усмотрение.
После добавления учетной записи в слева во "Всех папках" появится "fpGUI newsgroups", выделяем, справа выбираем "Управление подписками на группы новостей", отмечаем fpgui.development и fpgui.support. Thunderbird подумает, и после этого можно будет писать письма в ньюсгруп, а также видеть сами письма и ответы на них в списке.

Ambient писал(а):Кто-знает, почему Грэм использует не WideChar/WideString, а UTF8?
И можно ли проект перевести на WideChar?

debi12345 писал(а):Подозреваю заботу о расширенном китайском языке

В точку. От чистого WideString Грэм отказался сразу. Идея была примерно такой (утрированно): когда то давно разработчики кодировок решили что 1 байта на символ хватит каждому. Когда время показало что это не так, разработчики Unicode решили что уж 2 байта точно хватит каждому, и опять довольно быстро оказалось что это не так. Поэтому UCS-2, т.е. фиксированная двухбайтовая кодировка выпала из рассмотрения сразу. Остались UTF-8 (т.е. string c суррогатными парами) и UTF-16 (т.е. WideString с суррогатными парами).
Sergei I. Gorelkin писал(а):на момент начала работы над FPGUI widestring не имел счетчика ссылок и работа с ним в Windows была действительно медленнее. Кроме того, widestring был для разработчиков FPC чем-то второстепенным, с ним регулярно что-то ломалось, и надо отдать должное Мартину, который едва ли не ногами пинал команду до тех пор, пока они все не исправили.

Когда widestring более-менее стабилизировался, у Грэма была мысль перейти на UTF-16. Он подробно расспрашивал о достоинствах и недостатках во всех возможных списках рассылки и конференциях, и в конце концов нашел одну особенность, из-за которой всё-таки остался на UTF-8. Это возможность отлова ошибок в коде.
Поскольку Грэм пользуется английским, а UTF-8 совместим с ASCII, ошибки в коде обработки строк (а именно суррогатных пар) он замечал не всегда, поскольку в английских сообщенийх этих пар не было. Проблемы замечали в основном разработчики с французкой или русской локалью. В случае перехода на UTF-16, проблемы смогли бы заметить только те разработчики, которые используют символы, выходящие за USC-2, а таких разработчиков потенциально гораздо меньше и в fpGUI community их не было и пока нет. Поэтому отлов проблем с UTF-16 оказывается сложнее чем с UTF-8.
скалогрыз писал(а):WideString используется как базовый строковый тип для систем Windows

Позволю себе не согласиться, там используется UTF-16, т.е. не просто WideString, а WideString с суррогатными парами.
скалогрыз писал(а):WideString-и имеют преймущество, именно потому, что доступ по индексу возможен.

Доступ по индексу во многих (разумеется не во всех) случаях используется как прихоть, потому что удобнее написать
Код: Выделить всё
for i:=1 to Lenght(Str) do
  write(Str[i]);

чем что-то типа:
Код: Выделить всё
i := 1;
while GetNextChar(Str, i) do
  write(CharAtByte(Str, i);

Случаев, когда доступ по индексу незаменим я видел достаточно мало.
Максим писал(а):
скалогрыз писал(а):в том-то и дело! простому пользователю, миллионы символов не нужны! миллионами этих символов можно пренебречь!

Простой пользователь из Китая, думаю, оспорит это мнение. :mrgreen:

+миллион :)

Ambient писал(а):В Delphi используется именно 2-х байтовый WideChar. Что вполне достаточно для большинства применений.

Слово WideChar здесь получается двусмысленным. Речь идет либо о USC-2 (фиксированно 2 байта на символ) либо UTF-16 (2 или 2+2 байта на символ). Delphi тоже использует UTF-16 (http://blogs.embarcadero.com/abauer/2008/01/09/38845). Фундаментальная разница между UTF-8 и UTF-16 состоит лишь в том, что UTF-16 позволяет на данный момент "пренебречь" миллионом-другим пользователей из Китая (и возможно других стран), а UTF-8 заставляет думать об этом уже сейчас. И позиция Грэма при разработке fpGUI была именно в том, чтобы никем не пренебрегать.

Ambient писал(а):Но и Грэм мог бы подсуетиться и сделать возможность выбора. Ввел бы флаги и директивы условной компиляции и одним движением руки библиотека бы превращалась и в анси и вайд и в утф и ...

Теоретически в fpGUI используется свой строковый тип fpgString (=string, подразумевается кодировка UTF-8), и на данный момент используются механизмы обработки привязанные к UTF-8. В принципе, когда шла речь о разделении кодировок, была мысль сделать набор строковых функций, не привязанных к представлению строк. Например, вынести их и объявление строкового типа в отдельные модули и директивой переключаться между UTF-8 и UTF-16 представлением и функционалом. Но на тот момент в рассылке FPC шли бурные дискуссии относительно нового юникодного типа со встроенной поддержкой в компиляторе, и было решено подождать решения разработчиков FPC, чтобы не делать двойную работу.
Да и своеобразие библиотеки мешает

Извиняюсь, а FPGUI не своебразна ?

Конечно своеобразна :) Не хочу разжигать холивар, идея и проработанность MSE внушают уважение, но когда люди говорят про "своеобразие" MSE, обычно имеют в виду сильно непривычный стиль кода, названия виджетов, и их внешний вид. fpGUI близка по стилю кода (названия классов, регистр/форматирование и т.п.) к LCL/VCL. Грэм сразу отмел идею полной совместимости с LCL/VCL но по возможности старался придерживаться похожего на эти библиотеки "вида" кода.

Ambient писал(а):Кстати, а над использованием FPGUI в качестве интерфейса LCL кто-нибудь работает?

Насколько я знаю, пока никто.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Как уменьшить размер собранного exe?

Сообщение Attid » 29.09.2009 13:53:15

Odyssey есть кнопка редактировать.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Как уменьшить размер собранного exe?

Сообщение debi12345 » 29.09.2009 20:23:57

Насчет UTF8 "здесь и сейчас" - не согласен. Потому что эта кодировка 1) медленная и неудобная в работе и 2) китайский язык имеет тенценцию к упрощению до 64K иероглифов, а больше таковых неалфавитных языков и нет, а вместить еще кучу алфавитных языков в UCS2 и сейчас не проблема.
Единственный резон - встреча с другими галактиками - пока нереален, и терпеть нынешние недостатки ради иллюзорных инопланетян - зряшное дело. Вот когда прилетят, тогда и...
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как уменьшить размер собранного exe?

Сообщение derini » 30.09.2009 00:23:54

на вике прочитал следующее:
При стандартных настройках скомпилированный файл имеет очень большой размер, так как включает отладочную информацию (это легко исправляется, достаточно указать компилятору дополнительный ключ -Xs; однако это может быть абсолютно не очевидно начинающим пользователям).
_http://ru.wikipedia.org/wiki/Lazarus
сам еще не пробывал, завтра проверю
derini
незнакомец
 
Сообщения: 6
Зарегистрирован: 20.02.2007 14:57:34
Откуда: Полтава, Украина

Re: Как уменьшить размер собранного exe?

Сообщение Logo » 30.09.2009 00:43:42

Lazarus, это среда разработки, ориентированная на крупные и очень крупные проекты!
Поэтому нет смысла в Lazarus делать мелачёвку из одной формы с одной кнопкой, так-как выполняемый файл будет иметь размер не намного меньше, чем проект с 50 формами и сложной логикой!

Если необходимо получить наименьший размер выполняемого файла, - оптимизируйте сначала все модули FPC, затем все модули Lazaru`a и откомпилируйте свой проект с полной оптимизацией.
Если нужно получить еще меньше файл, то пишите чисто на FPC.

Что касается Delphi, то его размер не такой уже и маленький, как его рисуют. Вытащите все библиотеки .bpl(вроде так, уже не помню) и прибавте к .ехе файлу. А еще лучше, откомпилируйте на Delphi задачу под 64 разряда и сравните с Lazarus`ом :)
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Как уменьшить размер собранного exe?

Сообщение Максим » 30.09.2009 01:13:44

derini
Лучше документацию для Lazarus брать тут.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Как уменьшить размер собранного exe?

Сообщение carrots » 30.09.2009 04:30:42

У меня программа написанная на FreePascal которая каптурит и компрессирует видео с камер видео-наблюдения и передает их на сервер когда появляется с ним связь, при чем загружает с сервера новые HD рекламные ролики, показывает рекламу и объявления, и делает кучу остальной работы в маршрутном автобусе, весит всего 384kb, а программа для администрирования всего общественного транспорта, написанная в Lazarus-е, функционал которой даже перечислять лень, весит всего 4мб (при чем не малую часть берут на себя картинки и прочие ресурсы).
При чем все это 64 бита и под линух, чего не сделаешь в Delphi.
Простенькая программка на FreePascal займет 250-300кб, проект lazarus-а от 2-х мб, мне кажется это достаточно хорошо и не нужно искать каких-то мудреных способов уменьшить размер файлов, просто нужно в настройках компилятора включить оптимизацию, включить strip и отключить дебаг-инфомацию, перекомпилирувать с оптимизацией(-O3 -Xs -XX -CX) FreePascal и Lazarus.

Если нужны еще меньше приложения - можно дополнительно использовать UPX. После UPX консольные приложения будут занимать от 80kb, а GUI проекты Lazarus-а от 600кб при использовании qt или gtk (fpGUI должен весить еще меньше).

Добавлено спустя 9 часов 57 минут 18 секунд:
Если вам нужны фалы еще меньше - идите в QT Creator, там графическое приложение может занимать всего 10кб + установленный QT разумеется (120-166mb).
Хотя если честно, меня размер файла меньше всего всего интересует, не вижу смысла за ним ганяться.
Аватара пользователя
carrots
постоялец
 
Сообщения: 138
Зарегистрирован: 28.03.2008 02:13:02

Re: Как уменьшить размер собранного exe?

Сообщение Logo » 30.09.2009 17:44:32

carrots писал(а):Добавлено спустя 9 часов 57 минут 18 секунд:
Если вам нужны фалы еще меньше - идите в QT Creator, там графическое приложение может занимать всего 10кб + установленный QT разумеется (120-166mb).
Хотя если честно, меня размер файла меньше всего всего интересует, не вижу смысла за ним ганяться.

Это "kit", для работы нужно рантайм, а он небольшой, кроме того, можно не все библиотеки ставить для конкретного приложения.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Как уменьшить размер собранного exe?

Сообщение carrots » 30.09.2009 20:47:47

Нет, это не ¨kit¨, это версия ¨Qt: Framework Only¨ без SDK и без Qt Creator IDE под винду занимает 166 mb, а Qt SDK под винду занимает 178mb.(И это еще только размер инсталяции)
Про линух беспокоится не приходится, QT там в большинстве случаев стоит сразу.
Аватара пользователя
carrots
постоялец
 
Сообщения: 138
Зарегистрирован: 28.03.2008 02:13:02

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 55

Рейтинг@Mail.ru