Meine DLL-Datei erfordert einige Codepage-Konvertierungskarten. Einige Zeichenketten müssen Zeichen für Zeichen umgewandelt werden. Derzeit habe ich mehrere große Wörterbücher erstellt, die diese Maps enthalten. Diese Dictionaries sind so groß, dass ich sie in 8 Dictionaries aufteilen musste, sonst konnte ich mit C# nicht kompilieren. Jetzt dauert es mehrere Sekunden, um die Anwendung zu laden, und sie verbraucht zu viel Speicher.
Ich würde mir wünschen, dass dies ein wenig effizienter ist. Vielleicht kann ich eine (oder mehrere) Tabelle in meine DLL einbetten und sie mit SQL oder LInQ oder so abfragen. Ich weiß, dass eine DLL nicht zum Speichern von Daten gedacht ist, aber meine Kunden werden eine einzige DLL-Datei zu schätzen wissen. Die Tabelle müsste nur schreibgeschützt sein und ~62000 Zeilen enthalten.
Zusätzliche Informationen:
Ich habe 10 Codeseiten, die ich in Unicode UND zurück konvertieren muss.
6 dieser Codepages sind Ein-Byte-Codepages und keine große Sache. (6 * 256 * 2 = 3072 Elemente)
4 davon sind Doppelbyte-Codepages, CP932, CP950, CP936 UND CP949, macht ~62000 * 2 = 124000 Einträge
Ich könnte die ersten 128 Zeichen eines beliebigen Zeichensatzes weglassen, aber das macht nicht viel Sinn.
Wenn ich dies in einer abfragbaren Datei speichern könnte, müsste ich nur ~62000 + 1536 Datensätze speichern und sie für die Konvertierung in beide Richtungen verwenden.
Das Nachschlagen von Zeichen in den aktuellen Wörterbüchern geht recht schnell. Der Speicherverbrauch ist nicht so wichtig, die Startzeit stört mich am meisten.
Die Suche muss schnell sein, im schlimmsten Fall muss ich etwa 20 Sätze pro Sekunde umwandeln. Eine Verzögerung ist nicht erwünscht, sie muss Schritt halten.
Ist dies möglich, und wie lässt sich dies am besten bewerkstelligen?