Перейти к публикации
Форум - ComputerCraft
  • записей
    7
  • комментария
    72
  • просмотров
    15 678

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

Krutoy

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

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

 

Введение

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

  • Like 2

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


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

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

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


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

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

Не понял. Через 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"

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


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

require("parser.main")

require("parser.lua")

 

Где эти либы посмотреть? Они встроенные в OC?

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


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

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

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

 

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

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


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

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

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

 

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

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

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

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×