Мне нужно хранить много строк в оперативной памяти.Но они не содержат специальных символов Юникода, все они содержат только символы из «ISO 8859-1», что составляет один байт.
Теперь я могу преобразовать каждую строку, сохранить ее в памяти и преобразовать обратно, чтобы использовать еес .Contains () и подобными методами, но это будет непроизводительно (по моему мнению) и медленно.
Есть ли строковый класс, который быстр и надежен и предлагает некоторые методы исходного строкового класса, например.Contains ()?
Мне нужно это, чтобы хранить больше строк в памяти с меньшим объемом используемой оперативной памяти.Или есть другой способ сделать это?
Обновление:
Спасибо за ваши комментарии и ваш ответ.
У меня есть класс, в котором хранится строка.Затем с помощью одного вызова метода мне нужно выяснить, есть ли у меня эта строка в памяти.У меня есть около 1000 строк, чтобы выяснить , если они есть в списке в секунду .Всего сто миллионов.Средний размер строки составляет около 20 символов.Меня действительно волнует оперативная память.
Я даже думал о сжатии нескольких миллионов строк и сохранении этих пакетов в памяти.Но затем мне нужно распаковывать его каждый раз, когда мне нужен доступ к значениям.
Я также пытался использовать HashSet, но необходимый объем памяти был еще выше.
Мне не нужноистинное значение.Просто чтобы узнать, есть ли значение в списке.Так что, если есть хэш-значение, которое может это сделать, даже лучше.Но все, что я нашел, требует больше памяти, чем чистая строка.
В настоящее время нет плана дальнейшей интернационализации.Так что с этим я бы столкнулся, когда пришло время: -)
Я не знаю, решит ли это использование базы данных.Мне не нужно ничего извлекать, просто чтобы узнать, хранилось ли значение в классе.И мне нужно сделать это быстро.