Мой файл DLL требует некоторых карт преобразования кодовых страниц. Некоторые строки должны быть преобразованы char в char. В настоящее время я создал несколько огромных словарей, которые содержат эти карты. Эти словари настолько велики, что мне пришлось разделить их на 8 словарей, иначе C # не позволил мне скомпилировать. Теперь загрузка приложения занимает несколько секунд, и он использует слишком много памяти.
Я бы хотел, чтобы это было немного более эффективно. Может быть, я могу встроить (или несколько) таблицы в моей DLL и запросить его с помощью sql или linq или что-то. Теперь я знаю, что DLL не для хранения данных, но мои клиенты оценят один DLL-файл. Таблица должна быть только для чтения и содержать ~ 62000 строк.
Дополнительная информация:
У меня есть 10 кодовых страниц, которые мне нужно преобразовать в юникод И обратно.
6 из этих кодовых страниц являются однобайтовыми и не имеют большого значения. (6 * 256 * 2 = 3072 позиции)
4 из них являются двухбайтовыми кодовыми страницами, CP932, CP950, CP936 и CP949, составляют ~ 62000 * 2 = 124000 элементов
Я мог бы пропустить первые 128 символов любой кодировки, но это не имеет особого смысла.
Если бы я мог сохранить это в запрашиваемой форме, мне нужно было бы сохранить ~ 62000 + 1536 записей и использовать их для преобразования в обоих направлениях.
Поиск символов в текущих словарях довольно быстрый. Использование памяти не имеет большого значения, время запуска беспокоит меня больше всего.
Поиск должен быть быстрым, в худшем случае мне нужно конвертировать около 20 предложений в секунду. Задержка не желательна, она должна идти в ногу.
Возможно ли это и как лучше всего достичь этого?