Уменьшение размера исполняемого файла

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

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

Re: Уменьшение размера исполняемого файла

Сообщение Лекс Айрин » 21.10.2015 12:42:38

pupsik LLCL я вообще не рассматриваю. Если нужно будет уменьшать размер файла, то надо будет переходить на API-функции и писать свою собственную библиотеку. Хотелось бы вырезать все неиспользуемые из программы функции, но это уже вопрос к разрабам(((

pupsik писал(а):Это было продолжение темы, а не явное указание к действию, или указанию на ошибку.


а я указал минус такого подхода в текущий момент. Просто продолжая тему.

pupsik писал(а):Почему, даже разработчики со стажем, считаю что размер не имеет значения?


А куда деваться. Я, например, уже смирился с более чем двухметровым блокнотом. Потихонечку добавляю функционал и со временем 2-3 метровый файл не будет так страшен. Уменьшение размера, без ущерба для функциональности, к сожалению невозможно. Сжимать файл для того чтобы он был меньше не хочется.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Уменьшение размера исполняемого файла

Сообщение pupsik » 21.10.2015 13:53:57

В принципе да: куда деваться. Особенно меня "порадовал" размер ХЕ приложений.
LLCL - своего рода KOL. Только более удобен для создания.
А апи системы. Если кросс вариант. Уж больно я привык "кнопки жамкать" :roll:
п.с.
Цена уж больно кусючая будет да и времени больше займет - если на апи делать.
Кстати: вы не продолжили тему, а именно на меня указали :D
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Уменьшение размера исполняемого файла

Сообщение Лекс Айрин » 21.10.2015 14:22:09

pupsik, я сам тот чел из пестни группы Технология))

pupsik писал(а):Кстати: вы не продолжили тему, а именно на меня указали :D


pupsik писал(а):Цена уж больно кусючая будет да и времени больше займет - если на апи делать.


это да... поэтому большинство и предпочитает RAD системы. Но минусом этого подхода является размер исходного файла. Подозреваю, что в коде очень много мертвого кода. (надо будет поискать способ избавиться от него не компилируя приложение заново)
не люблю отвечать толпе... поэтому я предпочитаю каждый раз акцентировать кому я говорю в данный момент.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Уменьшение размера исполняемого файла

Сообщение vada » 21.10.2015 14:46:14

Лекс Айрин
vada, отладочная информация это не только отладочные символы. И в твоем случае остается больше информации, которая для конечного пользователя не нужна.

Кто бы спорил. Но!
EXE файл с отладочной информацией в отдельном файле имеет размер 5 116 949. Тот же EXE файл пропущенный через strip имеет размер 5 116 947 :D
Как говорится, почувствуйте разницу в два байта.
Так что я особо не парюсь. :P
Вот как бы научит линковщик выбрасывать из классов методы и свойства которые не используются? Вот только об этом можно узнать только при выполнении, да и то далеко не всегда. :)
А с другой стороны, а оно надо?
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Уменьшение размера исполняемого файла

Сообщение Лекс Айрин » 21.10.2015 14:58:33

vada, а кто гарантирует, что этой оставшейся инфы не станет со временем больше? Илии , что к ней не сморет приклеиться какая-нибудь зараза?

vada писал(а):Вот как бы научит линковщик выбрасывать из классов методы и свойства которые не используются?


Вот это я называю мертвым кодом.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Уменьшение размера исполняемого файла

Сообщение vitaly_l » 21.10.2015 15:05:19

Там ещё же все имена сохраняются... В параллельной ветке обсуждали обфускацию, как затруднитель чтения кода...
Однако, если сделать умную обфускацию, то все имена можно в программе сократить до 1 - 3х символов.
Это естественно уменьшит файл в 11, а то и 55 раз, а в отдельных случаях даже 555 !!!!!
Но надстройку в IDE, которая будет делать обфускацию, почему-то никто не хочет делать :cry: , а ведь это всего лишь один массив...


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Уменьшение размера исполняемого файла

Сообщение pupsik » 21.10.2015 15:11:35

vitaly_l меня терзают смутные сомнения о вашей принадлежности к касте художников.
Чет "ругаетесь" вы не как художник :lol:
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Уменьшение размера исполняемого файла

Сообщение Лекс Айрин » 21.10.2015 15:20:45

vitaly_l, а зачем нам в исполняемом файле эти имена вообще? Нам нужны адреса процедур и функций. Если для создания перемещаемого кода, так можно совершенно спокойно использовать порядковый номер.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Уменьшение размера исполняемого файла

Сообщение vitaly_l » 21.10.2015 15:33:33

pupsik писал(а):vitaly_l меня терзают смутные сомнения о вашей принадлежности к касте художников.
Чет "ругаетесь" вы не как художник

С кем поведёшься от того и наберёшься... В смысле: у художников - много друзей программистов. Потом, я даже рисовать-то не умею :cry:
Лекс Айрин писал(а):а зачем нам в исполняемом файле эти имена вообще? Нам нужны адреса процедур и функций.

Стоп..... А так разве можно??? Но адреса даются только уже в оперативной памяти... Или я неправильно понял про адреса?
Лекс Айрин писал(а):использовать порядковый номер

Они там что все ещё параллельно и под номерами? ( сомневаюсь - это противоречит Глобальной системе "открытого бинарного поприетарного кода"... )
А для чего же тогда сохраняют названия в бинарниках?

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Уменьшение размера исполняемого файла

Сообщение Лекс Айрин » 21.10.2015 16:50:42

vitaly_l писал(а):Стоп..... А так разве можно???


Вообще-то не просто можно но и широко используется для, например, так называемых недокументированных функций.

vitaly_l писал(а):Но адреса даются только уже в оперативной памяти... Или я неправильно понял про адреса?


В оперативке даются так называемые абсолютные адреса. А в экзешнике хранятся относительные и специальная таблица привязки их к абсолютным. Причем, насколько я знаю, преимущественно все это необходимо для внешних ссылок (на функции из динамически линкуемых библиотек) или экспортируемых наружу.

vitaly_l писал(а):А для чего же тогда сохраняют названия в бинарниках?


Преимущественно, для нужд компилятора/отладчика. Ну или если функции файла используются вне файла, но это уже для dll/о файлов.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Уменьшение размера исполняемого файла

Сообщение vada » 21.10.2015 17:09:23

Преимущественно, для нужд компилятора/отладчика.

Код: Выделить всё
Object.Name
ась? Где иначе взять на этапе выполнения?
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Уменьшение размера исполняемого файла

Сообщение Лекс Айрин » 21.10.2015 17:17:00

vada на этапе выполнения это все УЖЕ определено. Другое дело, что в FPC используется внешний сборщик, который может тупо "подшить" объектный модуль не убирая служебной информации... только это проблемы сборщика, а не самой программы. Не забывайте, что процессору без разницы как получить адрес функции -- главное чтобы он был известен и валиден до момента перехода.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Уменьшение размера исполняемого файла

Сообщение vada » 21.10.2015 17:24:09

на этапе выполнения это все УЖЕ определено.

Нет. Посмотрите исходники базовых библиотек. Там в IF-ах навалом Object.Name
Вы хотите имя заменить на 1024 битный хеш? :) А нафига? Параноя что вашу прогу вскроют?
Терморектальный метод вскрывает все. И исходники и полную документацию.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Уменьшение размера исполняемого файла

Сообщение vitaly_l » 21.10.2015 17:29:08

vada писал(а):Вы хотите имя заменить на 1024 битный хеш? А нафига? Параноя что вашу прогу вскроют?

Речь о другом, понятно что, нормальному программисту без разницы номер там или название. А вот если это позволяет уменьшить в 555 раз исполняемый файл, это уже круто!!!
Лекс Айрин писал(а):В оперативке даются так называемые абсолютные адреса. А в экзешнике хранятся относительные и специальная таблица привязки их к абсолютным. Причем, насколько я знаю, преимущественно все это необходимо для внешних ссылок (на функции из динамически линкуемых библиотек) или экспортируемых наружу.

Круто! Я бы даже сказал это очень круто...
Даже по сути обфускация уже априори готова, нужно только как-то на эти адреса сослаться в IDE... И всё!... Файл станет в 555 раз меньше...
Если конечно возможно ВООБЩЕ запретить компилятору заносить в бинарник любое name для всех: элементов, переменных и функций...
:arrow: :?: Но как это сделать??? :cry:
Лекс Айрин по-моему Вы выдаёте: ЖЕЛАЕМОЕ за ДЕЙСТВИТЕЛЬНОЕ. Да?


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Уменьшение размера исполняемого файла

Сообщение Лекс Айрин » 21.10.2015 18:02:14

vitaly_l писал(а):А вот если это позволяет уменьшить в 555 раз исполняемый файл, это уже круто!!!


Ну вы даете.... конечно же настолько большое уменьшение файла не будет. Это получается, что имена функций/процедур имеют очень большую длинну. Гораздо бОльшую чем сам код.

vitaly_l писал(а)::arrow: :?: Но как это сделать??? :cry:


Собирать исполнимый файл не внешним линкером, а самим компилятором.

Не забывайте, что кроме этого в коде линкуемых библиотек полно мертвого (недостижимого) кода. Который нет возможности исключить, так как неизвестно используется он или нет.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Пред.След.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru