<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo Mitstreiter. Ich dachte, ich würde einige meiner Geschichten zur Verbesserung der JSL-Leistung mit Ihnen teilen. Wenn Sie WORDS verwenden, um sehr lange Zeichenfolgen (> 200.000 Zeichen) zu analysieren, wird dies hilfreich sein.
Ich hatte einige Leistungsprobleme bei JSL. Ich habe es auf langsame Leistung der WORDS-Funktion für wirklich lange Zeichenfolgen zurückgeführt. Die WORDS-Funktion parst einen String in eine Liste, wobei entweder ein Leerzeichen oder ein angegebenes Trennzeichen verwendet wird. Normalerweise ist diese Funktion ziemlich schnell, verlangsamt sich jedoch bei Strings mit einer Länge von etwa 200.000 Zeichen. Ja, ich habe so lange und längere Saiten. Hier ist ein Diagramm der Leistung:

Also habe ich eine bessere Mausefalle geschrieben. Tatsächlich habe ich zwei Mausefallen geschrieben, wie Sie der Grafik entnehmen können. Die erste (MYWORDS1) verwendet OPEN, um eine Textzeichenfolge in einem Datensatz zu öffnen. Der zweite (MYWORDS2) teilt die Daten in ungefähr 100.000-Byte-Blöcke auf und führt WORDS auf den Blöcken aus. Beide haben im Vergleich zu WORDS eine hervorragende Leistung, bei höheren Zeichenwerten.
Obwohl die MYWORDS1-Funktion etwas besser ist, hat sie Schwierigkeiten, wenn der Text Wagenrücklauf und Zeilenvorschub enthält. Ich werde also wahrscheinlich MYWORDS2 für die Produktion verwenden.
Die in MYWORDS1 verwendete Technik bietet viele Möglichkeiten! Danke an Peter Wiebe für die ursprüngliche Idee, OPEN zu verwenden, meinen Code zu überprüfen und dann zu verbessern. Hier ein kurzes Beispiel, das zeigt, wie eine Textzeichenfolge in einer Datenmenge geöffnet wird, indem jede mit Trennzeichen versehene Zeichenfolge in einer separaten Zeile analysiert wird:
big_string = "Dies ist eine durch Leerzeichen getrennte Beispielzeichenfolge" ;
tmpdt = öffnen ( char zu blob ( "WordColumn" || "" || big_string ) . Text .
Ende der Linie ( andere ) . eolother ( "" ) . Endfeld ( Tab ) . unsichtbar ) ;
Übrigens wurden diese Ergebnisse mit JMP 9.0.2 auf einem 32-Bit-XP-Rechner mit 3 GB RAM und einem Prozessor mit 2.55 GHz (i5-2520M) erzielt. Ich habe die Funktionen unter Windows 7 mit JMP 9 und JMP 10 Beta getestet und die Ergebnisse waren vergleichbar.
Ich habe den Code für die Funktionen und einen Testcode angehängt.
Genießen!
Peter