самый быстрый способ записи битового потока на современном оборудовании x86

Какой самый быстрый способ записать поток битов на x86 / x86-64? (кодовое слово <= 32 бит)

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

в настоящее время у меня есть стандартный контейнер с 32-битным промежуточным буфером для записи в

void write_bits(SomeContainer<unsigned int>& dst,unsigned int& buffer, unsigned int& bits_left_in_buffer,int codeword, short bits_to_write){
    if(bits_to_write < bits_left_in_buffer){
        buffer|= codeword << (32-bits_left_in_buffer);
        bits_left_in_buffer -= bits_to_write;

    }else{
        unsigned int full_bits = bits_to_write - bits_left_in_buffer;
        unsigned int towrite = buffer|(codeword<<(32-bits_left_in_buffer));
        buffer= full_bits ? (codeword >> bits_left_in_buffer) : 0;
        dst.push_back(towrite);
        bits_left_in_buffer = 32-full_bits;
    }
}

Кто-нибудь знает какие-нибудь хорошие оптимизации, быстрые инструкции или другая информация, которая может быть полезна?

Ура,

11
задан Magnus 18 April 2011 в 15:36
поделиться