Как использовать 1-битные двоичные массивы в Javascript - PullRequest
0 голосов
/ 03 июня 2018

Javascript поддерживает чтение и запись в двоичные массивы с интерфейсом typed array .

По сути, он создает буфер памяти двоичных данных, а затем считывает эти двоичные данные через «представление».Это представление сообщает браузеру, сколько бит данных должно быть прочитано за один раз, и делает из него массив ..

Например, биты 0000000100000001 будут выглядеть так в разных представлениях:

// 8 bit (char) array
charArray[0] = 1;
charArray[1] = 1;

// 16 bit (short int) array
intArray[0] = 257;

Для проекта, над которым я работаю, мне нужно хранить только 1 бит данных за раз, и размер файла является проблемой.Наименьший размер встроенного массива в Javascript - это массив char, и использование массива char для простого сохранения либо 1, либо 0 будет пустой тратой пространства, поскольку в нем должны храниться все начальные 0.

Мой вопрос: Каким был бы самый быстрый способ с точки зрения производительности читать двоичные данные по 1 биту в Javascript за раз?

Я знаю, что javascript поддерживает побитовые операторы , но я могуничего не нашел об их производительности.Единственное, о чем я могу подумать, - это использовать массив символов и написать собственную логику, которая бы вычитала правильное число для чтения только одного бита за раз.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 03 июня 2018

Насколько я знаю, побитовые операции почти во всех языках чрезвычайно быстрые.

Если вы читаете и храните 8 бит за раз (что обычно предусмотрено для языков наименьшего размера), у вас не должно быть никакихпроблема в удовлетворении ваших временных требований.

Извлечение бита i th в 8-битное значение происходит быстро, если вы реализуете его как сдвиг прав и побит и и (или сдвиг влево и сдвиг в правах).

...