Перейти к содержимому

Крутой блог

  • записей
    7
  • комментария
    82
  • просмотров
    49 567

Crunch - Хрустим 4к лимит!

Krutoy

3 557 просмотров

Эта статья - частичный перевод программы с официального форума.

 

Введение

Представьте что вы программируете микроконтроллер. И тут вы упираетесь в предел размера файла - 4к. Вам придется уродовать ваш код, что бы втиснуться, но есть лучшее ренешие:

Crunch!

 

Crunch (хруст) - это программа, сжимающая код на Lua.

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

Еще, Crunch умеет создавать "самораспаковывающийся" архив, используя алгоритм LZ77.

 

Программа позволяет сжать файл в 4 раза, уменьшая размер до 25% от первоначального!

Skex (загрузчик для биоса) был уменьшен с 3 990 до 2 366 байт - уменьшение на 40%.

Totoro Recursive Miner был уменьшен с 9 390 до 3 477 байт. В 2.7 раз меньше. Теперь его можно всунуть в биос.

 

qHM8BL2.png

 

 

Установка

 

Просто скачайте tar архив и распакуйте в корень. Все файлы установятся по своим местам.

 

github

 

Распаковщик .tar файлов:

wget 'https://raw.githubusercontent.com/mpmxyz/ocprograms/master/home/bin/tar.lua'

Crunch:

wget 'https://raw.githubusercontent.com/mpmxyz/ocprograms/master/tars/crunch.tar'tar -xf crunch.tar

Для документации по командам наберите в консоли

man crunch

  • Нравится 4


11 комментариев


Рекомендуемые комментарии

посмотрел сие Чудо (чункер или как его правильно) - прикольно. Правда оно тупо удалило все пробелы в коде, а переменные, которые типа блаблаблаoченьдлинннно =    заменило переменными а,b,с,d,f   и т.д. :)

Больше изменений в коде не встретил.

 

Маленькие файлы сжимать словарным сжатием (если это можно назвать сжатием) смысла нет. Не совсем пока понятны возможности чункера.

 

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

Поделиться комментарием


Ссылка на комментарий

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

Поделиться комментарием


Ссылка на комментарий

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

Не понял. Через API сайта что ли?

Поделиться комментарием


Ссылка на комментарий

 

 

посмотрел сие Чудо (чункер или как его правильно) - прикольно. Правда оно тупо удалило все пробелы в коде, а переменные, которые типа блаблаблаoченьдлинннно =    заменило переменными а,b,с,d,f   и т.д. Больше изменений в коде не встретил.

Часто удалить пробелы и комментарии, а так же сократить длинные названия до коротких вполне достаточно что бы существенно сократить текст. Этот упаковщик не оптимизирует структуру программы, а лишь удаляет лишние символы. Например, он не заменит if not(A~=true) then на if A then, но вроде может заменить

local a=1
local b=2
local c=3

на

local a,b,c=1,2,3

Поделиться комментарием


Ссылка на комментарий

 но вроде может заменить

local a=1
local b=2
local c=3

на

local a,b,c=1,2,3

На счет этого я поторопился. Может заменить имя частовстречаемой стандартной функции на более короткое.

Например из

component =require("component")
filesystem=require("filesystem")
event     =require("event")
term      =require("term")

сделает

local b=require
component=b("component")filesystem=b("filesystem")event=b("event")term=b("term")a=1

Как видим, служебное слово "require" заменяется более коротким "b"

Поделиться комментарием


Ссылка на комментарий

Пойду сжимать свою либу. Она весит 5 KiB, потом сообщу сколько сейчас.

Стало 2 (!) килобайта!

 

Только все комментарии были сбиты да и фиг с ними. И код стал немного не красивее.. http://pastebin.com/dsMsdHYqтут результат

Поделиться комментарием


Ссылка на комментарий

Пойду сжимать свою либу. Она весит 5 KiB, потом сообщу сколько сейчас.

Стало 2 (!) килобайта!

 

Только все комментарии были сбиты да и фиг с ними. И код стал немного не красивее.. http://pastebin.com/dsMsdHYqтут результат

Сжимать либы почти нет смысла. хотя для красоты можно и так. 

Еще, попробуй добавить параметр --lz77 когда будешь сжимать и посмотри размер.

Поделиться комментарием


Ссылка на комментарий
Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...