Перейти к публикации
  • записей
    7
  • комментария
    72
  • просмотр
    17 101

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

Krutoy

2 249 просмотров

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

 

Введение

Представьте что вы программируете микроконтроллер. И тут вы упираетесь в предел размера файла - 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

  • Like 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 когда будешь сжимать и посмотри размер.

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

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

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

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

×