Кодирование данных с помощью эмодзи: обзор инструмента Base100
Утилита работает аналогично base64, но вместо представления данных в текстовом виде превращает их в эмодзи.
3К открытий3К показов
Base? — это утилита командной строки, которая позволяет представить любой байт информации в виде уникального эмодзи. Она работает по тому же принципу, что и Base64.
Использование
Реализовано все достаточно просто. В стандартный поток ввода приходят исходные данные, а в stdout идёт кодировка в виде эмодзи. Данные кодируются автоматически, если не прописан флаг --decode
. Функция --encode
ничего не делает и существует только для людей, которые не хотят читать документацию.
Подводные камни
Base? крайне неэффективна по памяти. Она увеличивает объём данных примерно в 3 раза, поэтому её стоит использовать, лишь когда вам нужно использовать наименьшее количество символов для записи данных. Хорошим примером использования будет кодирование хэшей и контрольных сумм.
Производительность
Base? имеет хорошую производительность и немного превосходит GNU base64.
На машинах, поддерживающих AVX2, используется вручную настроенный x86-64 декодировщик, и производительность возрастает на 25%. Скоро будет добавлена поддержка AVX-512. Также ведется работа над векторизованным кодировщиком для AVX2 и SSE2.
Обратите внимание, что приведенные ниже тесты были сделаны на значительно более слабой машине, чем те, что расположены выше, и их не стоит сравнивать напрямую.
В этом случае base? сильно обгоняет по производительности base64.
Будущие планы
- Разрешить кодирование данных с помощью 1024 элементов emoji;
- Произвести дополнительную оптимизацию и убедиться в том, что возможности SIMD использованы по полной;
- Добавить поддержку мультипроцессорных систем.
3К открытий3К показов