Русские символы в Unicode кодируются двумя байтами. Но если составить таблицу символов для некорого текста, может оказаться, что 6-ти или 7-ми битов вполне достаточно для кодирования любого символа этого текста.
Не приходила ли кому идея сделать класс строки на основе BitArray для того, чтобы сэкономить на хранении текстов в памяти?
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Русские символы в Unicode кодируются двумя байтами. Но если составить таблицу символов для некорого текста, может оказаться, что 6-ти или 7-ми битов вполне достаточно для кодирования любого символа этого текста.
ЭФ>Не приходила ли кому идея сделать класс строки на основе BitArray для того, чтобы сэкономить на хранении текстов в памяти?
Приходила несколько раз за последние 15 лет, никогда не оправдывала себя.
S> Приходила несколько раз за последние 15 лет, никогда не оправдывала себя.
А тегирование? Если, допустим, есть много справочников с элементами, но количество элементов в справочнике гораздо меньше 4 миллионов, то для того, чтобы сослаться на элемент справчника не нужен int с 32-мя битами.
Здравствуйте, Эйнсток Файр, Вы писали:
S>> Приходила несколько раз за последние 15 лет, никогда не оправдывала себя.
ЭФ>А тегирование? Если, допустим, есть много справочников с элементами, но количество элементов в справочнике гораздо меньше 4 миллионов, то для того, чтобы сослаться на элемент справчника не нужен int с 32-мя битами.
Если количество элементов гораздо меньше 4 миллионов, то не имеет смысла экономить память ценой лишней сложности. Если количество элементов в справочнике меряется сотнями миллионов, там возникают другие проблемы.
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Не приходила ли кому идея сделать класс строки на основе BitArray для того, чтобы сэкономить на хранении текстов в памяти?
Если сжимать то одного бита на букву в среднем может хватать. Тут вопрос в накладных расходах.
Еще Дэвиду Хаффману пришла. Не именно в BitArray конечно. Вопрос в уместности и смысле в каждом конкретном случае, для обработки в ОЗУ это скорее всего окажется вредным, чем полезным.
Хотя возможно в каких-то частных и довольно редких случаях использование 8-ми битной кодировки вместо 16-и возможно и имело бы смысл.
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Не приходила ли кому идея сделать класс строки на основе BitArray для того, чтобы сэкономить на хранении текстов в памяти?
Это называется UTF8.
В данный момент вовсю идёт реализация UTF8-литералов.
Ждём C#8.
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Русские символы в Unicode кодируются двумя байтами. Но если составить таблицу символов для некорого текста, может оказаться, что 6-ти или 7-ми битов вполне достаточно для кодирования любого символа этого текста.
ЭФ>Не приходила ли кому идея сделать класс строки на основе BitArray для того, чтобы сэкономить на хранении текстов в памяти?
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Русские символы в Unicode кодируются двумя байтами. Но если составить таблицу символов для некорого текста, может оказаться, что 6-ти или 7-ми битов вполне достаточно для кодирования любого символа этого текста.
ЭФ>Не приходила ли кому идея сделать класс строки на основе BitArray для того, чтобы сэкономить на хранении текстов в памяти?
Приходила. В Java начиная с 9й версии строка хранит символы в виде массива однобайтных элементов, если все символы в ASCII влазят и в виде двубайтных в противном случае.