LINUX.ORG.RU

История изменений

Исправление Vit, (текущая версия) :

Не скажу что я тебя прям понял =) Ибо какая разница что данные в 8 битном виде что в 32битном.

Меньше обращений к памяти. Заметно влияет. Можешь в трекере поискать, я где-то расписывал что косячно в декомпрессоре и методы исправления, но уже не помню деталей.

Короч, правильно написанный RLE может оказаться быстрее простого чтения из памяти. А текущий декомпрессор проще выкинуть нахрен, он deffective by design, бесполезно мелочи анализовать.

Давай проще. Вот у тебя входящие данные, битовый «поток» в виде массива char, выходной такой же. Ты хочешь что-бы войдя внутрь функции decompress перестала работать побайтовая дрочка, а брался из входящих данных кусок в 32 бита, декодировался и выплёвывался блоком в out массив (который обычный char)?

Как-то так. Просто сейчас декомпрессор типа «универсальный», который 1-2-3-4 бита на пиксель понимает. И кучу проверок делает, сколько битов. А надо реально сделать декомпрессию 3бит/px и этого большинству хватит на всю жизнь.

И подобного рода продолбанство по всему декомпрессору. Например битики считаются, вместо того чтобы в хвосте регистра флаг взвести, и после сдвига проверять значение регистра на ноль.

Прям регистры регистры ассемблерные? Или просто u/int32 блоки извлекаемые из входящего байтового «потока»?

Не, ну все на сишечке конечно, дальше компилер сам сообразит, что делать. Этого точно будет достаточно.

Исходная версия Vit, :

Не скажу что я тебя прям понял =) Ибо какая разница что данные в 8 битном виде что в 32битном.

Меньше обращений к памяти. Заметно влияет. Можешь в трекере поискать, я где-то расписывал что косячно в декомпрессоре и методы исправления, но уже не помню деталей.

Короч, правильно написанный RLE может оказаться быстрее простого чтения из памяти. А текущий декомпрессор проще выкинуть нахрен, он deffective by design, бесполезно мелочи анализовать.

Давай проще. Вот у тебя входящие данные, битовый «поток» в виде массива char, выходной такой же. Ты хочешь что-бы войдя внутрь функции decompress перестала работать побайтовая дрочка, а брался из входящих данных кусок в 32 бита, декодировался и выплёвывался блоком в out массив (который обычный char)?

Как-то так. Просто сейчас компрессор типа «универсальный», который 1-2-3-4 бита на пиксель понимает. И кучу проверок делает, сколько битов. А надо реально сделать декомпрессию 3бит/px и этого большинству хватит на всю жизнь.

И подобного рода продолбанство по всему декомпрессору. Например битики считаются, вместо того чтобы в хвосте регистра флаг взвести, и после сдвига проверять значение регистра на ноль.

Прям регистры регистры ассемблерные? Или просто u/int32 блоки извлекаемые из входящего байтового «потока»?

Не, ну все на сишечке конечно, дальше компилер сам сообразит, что делать. Этого точно будет достаточно.