<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola compañeros JMPers. Pensé en compartir mi historia de mejora de rendimiento de JSL con usted. Si está utilizando PALABRAS para analizar cadenas muy largas (> 200,000 caracteres), esto ayudará.
Estaba teniendo algunos problemas de rendimiento en JSL. Lo rastreé para disminuir el rendimiento de la función de PALABRAS para cadenas realmente largas. La función de PALABRAS analiza una cadena en una lista usando un espacio o un delimitador proporcionado. Normalmente esta función es bastante rápida, pero comienza a disminuir la velocidad de las cadenas de alrededor de 200,000 caracteres de longitud. Sí, tengo cuerdas que son tan largas y largas. Aquí hay una gráfica de rendimiento:

Así que escribí una mejor ratonera. De hecho, escribí dos trampas para ratones como se puede ver en la gráfica. El primero (MYWORDS1) usa OPEN para abrir una cadena de texto en un conjunto de datos. El segundo (MYWORDS2) corta los datos en partes de aproximadamente 100.000 bytes y ejecuta PALABRAS en las partes. Ambos tienen un excelente rendimiento en relación con las PALABRAS, en el mayor número de caracteres.
Aunque la función MYWORDS1 es un poco mejor, tiene problemas si el texto tiene retornos de carro y saltos de línea, por lo que probablemente iré con MYWORDS2 para uso de producción.
¡La técnica utilizada en MYWORDS1 tiene muchas posibilidades! Gracias a Peter Wiebe por la idea original de usar OPEN, y por revisar y luego mejorar mi código. Aquí hay un breve ejemplo que muestra cómo abrir una cadena de texto en un conjunto de datos, analizando cada cadena delimitada en una fila separada:
big_string = "Esta es una cadena de muestra delimitada por espacios" ;
tmpdt = abierto ( char to blob ( "WordColumn" || "" || big_string ) , texto ,
fin de la línea ( otro ) , eolother ( "" ) , campo de salida ( lengüeta ) , invisible ) ;
Por cierto, estos resultados fueron con JMP 9.0.2 en una máquina XP de 32 bits con 3 GB de RAM y un procesador i5-2520M con CPU a 2.50GHz. He probado las funciones en Windows 7 utilizando JMP 9 y JMP 10 beta, y los resultados fueron comparables.
He adjuntado el código para las funciones y algunos códigos de prueba.
¡Disfrutar!
Peter