Каков самый быстрый способ записи битового потока на 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;
}
}
Кто-нибудь знает какие-либо хорошие оптимизации, быстрые инструкции или другую информацию, которая может быть полезной?
Приветствия,