Gibt es eine string-Typ mit 8 BIT chars?

Muss ich speichern viel strings im RAM. Aber Sie enthalten keine spezielle unicode-Zeichen, die Sie alle enthält nur Zeichen aus "ISO 8859-1" das ist ein byte.

Nun, ich könnte konvertieren jeden string, in Speicher speichern und konvertieren es zurück zu verwenden .Enthält() und Methoden wie diese, aber das wäre Aufwand (meiner Meinung nach) und langsam.

Gibt es eine string-Klasse, ist schnell und zuverlässig und bietet einige Methoden von der ursprünglichen Klasse string wie .Enthält()?

Muss ich diese speichern mehr strings im Speicher mit weniger RAM verwendet. Oder gibt es einen anderen Weg, es zu tun?

Update:

Danke für deine Kommentare und deine Antwort.

Habe ich eine Klasse, die string-Shops. Dann mit einem Methodenaufruf, die ich brauche, um herauszufinden, ob ich bereits, dass Strings im Speicher. Ich habe über 1000 strings, um herauszufinden,, wenn Sie in der Liste eine zweite. hundert Millionen insgesamt.
Die Durchschnittliche Größe der string über 20 Zeichen. Es ist wirklich der RAM, das interessiert mich.

Ich dachte sogar über komprimieren einige Millionen von Zeichenketten und speichern Sie diese Pakete in den Speicher. Aber dann muss ich entpacken Sie es jedes mal, wenn ich brauche, um auf die Werte zuzugreifen.

Ich auch versucht, ein HashSet, aber der benötigte Speicher war sogar noch höher.

Brauche ich nicht den wahren Wert. Nur um zu wissen, ob der Wert in der Liste. Also, wenn es einen hash-Wert, das kann es, sogar besser. Aber alles was ich gefunden brauchen mehr Speicher als die Reine Zeichenfolge.

Derzeit gibt es keinen plan für die weitere Internationalisierung. So ist es etwas, das ich würde sich, wenn es Zeit ist zu 🙂

Ich weiß nicht, ob die Verwendung einer Datenbank würde es lösen. Ich brauche nicht, um etwas Holen, nur um zu wissen, ob der Wert wurde in der Klasse gespeichert. Und ich brauche, um dies zu tun schnell.

  • Sie könnten nur speichern Sie Sie als byte[]? Dann können Sie die Verwendung von Array ' s Contains Methode.
  • wie viel Speicher brauchen Sie?
  • Chris bist du absolut sicher, dass mit normalen unicode-Zeichenfolgen treffen würde, die Aufführungen, weil Sie laden müssen, zu viele Saiten?! Ich bin ein bisschen überrascht, wenn Sie wirklich müssen, laden Sie Hunderte oder Tausende von MBs der Saiten, vielleicht ist Ihre Anwendung ist nicht wirklich richtig entwickelt, unabhängig davon, ob Sie ASCII/ANSI oder Unicode. wenn es gibt soooo viele Streicher, vielleicht ein Datenbank-Ansatz wäre gut.
  • Diese reeks vorzeitiger Optimierung. Und was passiert, wenn Sie plötzlich brauchen, um zu internationalisieren Ihre app?
  • Wenn Sie brauchen, um zu speichern über 1000 strings mit einer durchschnittlichen Länge von 20 Zeichen, Ihre Netto-total ist rund 20 KB mit 1-byte-Zeichen, und um 40KB mit 2-byte-Zeichen. dies ist nicht ein problem. Verwenden Sie die String-Klasse, bewegen sich entlang.
  • sorry Lasse, spreche ich nicht über 1000 strings, ich bin die Berechnung in hundert Millionen.

InformationsquelleAutor Chris | 2011-02-06
Schreibe einen Kommentar