2012-04-10 14 views
0

Was ist der schnellste Weg, um eine Zeichenfolge in ein Array von Short-Ganzzahlen zu konvertieren, die die Zeichencodes darstellen?Konvertieren von Zeichenfolge in Array von ganzen Zahlen schnell

Ich verwende jetzt diese aber es kann wahrscheinlich viel schneller sein:

Dim shortsarray(mystring.Length - 1) as Short 
For i As Integer = 0 To mystring.Length - 1 
    shortsarray(i) = AscW(mystring.Chars(i)) 
Next 

Dank.

+1

Nach welcher Zeichencodierung suchen Sie? ASCII? Und warum suchst du etwas "schneller"? Haben Sie Leistungsprobleme, die Sie in diesem Code-Code sicher gestellt haben? – Oded

+0

@Oded Ich meine die Unicode-Werte (wie die Strings.AscW Funktion zurückgibt) – Peladao

+0

@Oded Dieser Code wird viel laufen, um der Effizienz (und lernen auch etwas) Ich mag es, den schnellsten Weg kennen – Peladao

Antwort

0
Dim shortsarray(mystring.Length - 1) as Short //One calculation 
For i As Integer = 0 To mystring.Length - 1 //One calculation, repeats n times 
    shortsarray(i) = AscW(mystring.Chars(i)) //Three calculations, repeats n times 
Next 

Als Ergebnis sollte dies in O (3n + 1) oder O (n) laufen. Dies ist linear auf die Länge der Eingabe, und es gibt nicht viel Verbesserung, die Sie davon erwarten können, da Sie eine zeichenweise Konvertierung durchführen. Ich denke, das ist wahrscheinlich so gut, wie Sie erwarten können, obwohl es vielleicht eine Bibliothek gibt, die nur das ganze Wort auf einmal konvertiert und Ihren Code sauberer macht.

Wenn Sie Leistungssteigerungen benötigen, möchten Sie zunächst Ihr gesamtes Programm profilieren. Dieser Ausschnitt ist möglicherweise nicht das Problem.

1

Ich weiß nicht, welche Art von Problem Sie versuchen zu lösen. Als Alternative könnten Sie die Zeichenfolge in ein Array von Zeichen konvertieren.

Dim chars() As Char = mystring.ToCharArray() 
+0

Das OP möchte kein neues char-array erstellen, sondern ein short-array für jedes char in der Zeichenfolge. http://msdn.microsoft.com/en-us/library/zew1e4wc%28v=vs.90%29.aspx –

+0

Ich weiß. Ich wollte diese Möglichkeit nur als Alternative zeigen. Vielleicht kann er es benutzen, vielleicht auch nicht. –

+0

@Olivier Nein, ich brauche eine Reihe von Shorts – Peladao

Verwandte Themen