Сжатие исполняемых файлов (Философский вопрос)
Модератор: Bizdelnick
-
- Сообщения: 847
- ОС: archlinux
Сжатие исполняемых файлов
Вот уже давно изобрели идею сжимать исполняемые файлы (ну в смысле elf'ы и пр.) так, чтобы они оставались исполняемыми, и при вызове на лету распаковывались. Это не только экономит место на диске (и, соответственно в кэше), но и ускоряет холодный старт программ (ибо читать с диска дольше, чем распаковывать). Ну вот upx такая софтинка есть, скажем.
Вопрос - а почему бы просто не применить её тупо к /bin и /usr/bin? Никто не пробовал ли случайно? Почему вообще до сих пор все живут с несжатыми программами? Какие минусы у этой технологии?
Вопрос - а почему бы просто не применить её тупо к /bin и /usr/bin? Никто не пробовал ли случайно? Почему вообще до сих пор все живут с несжатыми программами? Какие минусы у этой технологии?
-
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Сжатие исполняемых файлов
upx и другие упаковщики (тысячи их! особенно под винды) работают несколько не так, как вы сказали. Они просто выкидывают из исполнимого файла ненужную/необязательную информацию и переупорядочивают оставшуюся, чтоб файл поменьше был. Ну, например, есть такая штука - выравнивание секций файла. Чтобы ОС/процессору было "удобнее", лучше чтобы все секции elf-файла были по размеру кратны, скажем, 4Кб. Соответственно в файле получается куча нулей. Выравнивание необязательно, upx его убирает. Ну и т.д.
С настоящим сжатием/распаковкой, я думаю, выигрыша не получится - на большинстве файлов выигрыш от ускорения чтения файлов будет съеден затратами на распаковку. Имхо.
С настоящим сжатием/распаковкой, я думаю, выигрыша не получится - на большинстве файлов выигрыш от ускорения чтения файлов будет съеден затратами на распаковку. Имхо.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Сжатие исполняемых файлов
мы ведь просто размышляем, да?
тогда предлагаю к размышлению такую вводную информацию:
каков средний размер исполняемого файла или библиотеки в двух популярных операционных системах: gnu и win32?
тогда предлагаю к размышлению такую вводную информацию:
каков средний размер исполняемого файла или библиотеки в двух популярных операционных системах: gnu и win32?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 428
- ОС: openSUSE 12.3
Re: Сжатие исполняемых файлов
каков средний размер исполняемого файла или библиотеки в двух популярных операционных системах: gnu и win32?
Килобайты и мегабайты? :)
Может оно и не нужно тогда...
-
- Сообщения: 847
- ОС: archlinux
Re: Сжатие исполняемых файлов
Разве? о_О А это тогда что значит? (с оффсайта upx):Они просто выкидывают из исполнимого файла ненужную/необязательную информацию и переупорядочивают оставшуюся, чтоб файл поменьше был.
The main news in version 3 are:
- optional LZMA compression
каков средний размер исполняемого файла или библиотеки в двух популярных операционных системах: gnu и win32?
Код: Выделить всё
$ ls /usr/bin -s | sort -n | tail
3328 ctest
3364 qmake
4076 gimp-2.6
5620 gs
6028 audacity
7908 mencoder
8124 mplayer
8460 xetex
8904 inkview
8928 inkscape
Ну вот разработчики обещают обратное:С настоящим сжатием/распаковкой, я думаю, выигрыша не получится - на большинстве файлов выигрыш от ускорения чтения файлов будет съеден затратами на распаковку. Имхо.
It achieves an excellent compression ratio and offers very fast decompression.
Кстати, а ведь либы таким образом не сжимаются? Или теоретически можно, но потом надо все программы пересобирать, её требующие?
P.S.
Да-да, можно в флейм, если чтомы ведь просто размышляем, да?

-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Сжатие исполняемых файлов
Неправда, они действительно сжимают. Одним переупорядочиванием 40 мб файл до 8 мб не сожмешь (это Photoshop.exe был). Там используется именно сжатие:
А по поводу исходного вопроса: особого смысла нет. Цель упаковщика - экономия места, а не быстрый холодный старт. Загрузка с диска - это ну, может 20% времени, а скорее и того меньше. Основное время занимает собственно инициализация приложения. Думаете OOo грузится так из-за медленного чтения с винта? Или GIMP? Нет, сжатие не ускорит их загрузку.
А что касается экономии места мне под / (х64) хватает 10 гиг (ещё 2 гига свободные - мало ли что поставить понадобится). Так и стоит куча всякой гадости (dev-пакеты, TeX Live, etc).
PS насчёт фотошопа - весь профит был в уменьшении размера. Время запуска не изменилось

-
- Сообщения: 1205
- ОС: Debian Wheezy (amd64)
Re: Сжатие исполняемых файлов
а кроме того (раз уж философствуем).
Сжатие исполняемых файлов вещь уже очень старая. Очень актуально было в свое время: когда и система и проекты/игры/иной софт должны были разметситься на одной пятидюймовой дискете.....
Но сколько лет прошло, а это не очень то используется широко. Не думаю, что "все такие глупые" что не применили бы это если бы было действительно выгодно.
Не сталкивался давно, но раньше если исполняемый файл сам по себе маленький то его "сжатие" приводило к его увеличению
Сжатие исполняемых файлов вещь уже очень старая. Очень актуально было в свое время: когда и система и проекты/игры/иной софт должны были разметситься на одной пятидюймовой дискете.....
Но сколько лет прошло, а это не очень то используется широко. Не думаю, что "все такие глупые" что не применили бы это если бы было действительно выгодно.
Не сталкивался давно, но раньше если исполняемый файл сам по себе маленький то его "сжатие" приводило к его увеличению
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
-
- Сообщения: 2250
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Сжатие исполняемых файлов
Чего-то подумалось: а если упаковщик внести в линкер, а распаковщик в загрузчик ОС? Просто идейка, сомневаюсь, что это что-то даст 

-
- Сообщения: 2250
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Сжатие исполняемых файлов
не, смен контекста не будет - распаковка будет производиться загрузчиком, т.е. в памяти уже будет распакованный исходный образ. А вот ошибки - это да, возможно

-
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Сжатие исполняемых файлов
Код: Выделить всё
diesel@eifel:~$ du -hs /bin/ /usr/bin/ /lib /usr/lib
4.6M /bin/
126M /usr/bin/
97M /lib
1.1G /usr/lib
было бы чего паковать.
-
- Сообщения: 2567
- ОС: Debian
Re: Сжатие исполняемых файлов
На полноценных PC наверно смысла особого нет, а вот для встраиваемых решений это может иметь смысл.
-
- Модератор
- Сообщения: 21279
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Сжатие исполняемых файлов
Ни фига ж себе. У меня
Код: Выделить всё
$ du -hs /bin/ /usr/bin/ /lib /usr/lib
12M /bin/
249M /usr/bin/
162M /lib
280M /usr/lib
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 43
- ОС: Debian testing
Re: Сжатие исполняемых файлов
У упаковки исполняемых файлов есть один (не|)большой минус — повышеное потребление оперативной памяти...
-
- Сообщения: 1059
- ОС: Ubuntu, Debian
Re: Сжатие исполняемых файлов
Код: Выделить всё
frank@frank-desktop:~$ du -hs /bin/ /usr/bin/ /lib /usr/lib
6,6M /bin/
343M /usr/bin/
496M /lib
2,8G /usr/lib

Ну а по теме: лучше сжатие на уровне ФС, причём опциональное. И оно таки есть в этих самых некоторых ФС.

-
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Сжатие исполняемых файлов
Bizdelnick писал(а): ↑13.03.2010 13:24
Ни фига ж себе. У меня
Код: Выделить всё
$ du -hs /bin/ /usr/bin/ /lib /usr/lib 12M /bin/ 249M /usr/bin/ 162M /lib 280M /usr/lib
это debian stable со всеми потрохами метапакета gnome-desktop-environment
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Сжатие исполняемых файлов
жму руку.
вот почему так получается?
опытные пользователи ставят stable.
а новички (которых на каждом углу от этого предостерегают), не задумываясь, громоздят себе если не unstable, то вообще какую-нибудь гремучую смесь.
почему?
вопрос риторический.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 2567
- ОС: Debian
Re: Сжатие исполняемых файлов
Ну зачем обобщать? 
Я не считаю себя опытным пользователям, но тем не менее всегда использую только stable, да и перехожу на него обычно только после r1-r2.
Если система всем устраивает, то зачем что-то менять?
P.S. Хотя надо признать, что несколько пакетов из backports всё же стоят.
P.P.S. Ответ тоже риторический.

Я не считаю себя опытным пользователям, но тем не менее всегда использую только stable, да и перехожу на него обычно только после r1-r2.
Если система всем устраивает, то зачем что-то менять?
P.S. Хотя надо признать, что несколько пакетов из backports всё же стоят.
P.P.S. Ответ тоже риторический.
-
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Сжатие исполняемых файлов
Прямо в точку, причём многократно повышенное, и именно поэтому сжатие не получило широкого распространения.
Оно даёт экономию в занимаемом месте на диске, но проигрыш в виде повышенного расхода памяти и в некоторых случаях - времени при запуске файла.
Если несжатый бинарник можно тупо примапить в оперативку (google://memory-mapped file) и начать исполнять, даже не считывая его весь, то сжатый нужно не просто сначала прочитать, но ещё и зарезервировать в ОЗУ место, куда он будет распакован. Соотв-но при последующей нехватке ОЗУ придётся скидывать это в своп, тогда как страницы несжатого файла можно просто сдискардить, т.к. на диске-то они всеравно есть (и являются как бы "read-only продолжением" свопа).
-
- Сообщения: 2250
Re: Сжатие исполняемых файлов
rm_ писал(а): ↑13.03.2010 19:13
Прямо в точку, причём многократно повышенное, и именно поэтому сжатие не получило широкого распространения.
Оно даёт экономию в занимаемом месте на диске, но проигрыш в виде повышенного расхода памяти и в некоторых случаях - времени при запуске файла.
Если несжатый бинарник можно тупо примапить в оперативку (google://memory-mapped file) и начать исполнять, даже не считывая его весь, то сжатый нужно не просто сначала прочитать, но ещё и зарезервировать в ОЗУ место, куда он будет распакован. Соотв-но при последующей нехватке ОЗУ придётся скидывать это в своп, тогда как страницы несжатого файла можно просто сдискардить, т.к. на диске-то они всеравно есть (и являются как бы "read-only продолжением" свопа).
А теперь считаем такты, переключения контекстов, промахи кешей, сбросы TLB....
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Сжатие исполняемых файлов
а кто-то только что сказал, что «неопытный» (подмигиваю)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
-
- Сообщения: 438
- Статус: Подопытный участник
Re: Сжатие исполняемых файлов
Новичков очень часто переполняют (необоснованные) надежды, что вот еще чуть-чуть и Linux перестанет тормозить, глючить, станет всеми любимым и повсюду распространенным. Естественно, все это они ожидают увидеть не в позапрошлых дистрибутивах, а в самых новых.
С опытом надежды тают, баги становятся фичами…
С опытом надежды тают, баги становятся фичами…
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Сжатие исполняемых файлов
скорее потому, что ты можешь написать баг-репорт мэйнтейнерам.
да-да, мы все в это верим (улыбка)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог