Tengo una función que necesito para ser rápida, ya que la estoy usando en una fórmula de columna en tablas con filas de 500K-21M.
Tratando de optimizar la velocidad, hice algunos benchmarking. Conseguí la velocidad lo más rápido que pude, y seguía siendo lento.
Mi función utiliza algunas matrices como tablas de búsqueda. Los cargué en la memoria en un paso anterior, en mi script de inicio de sesión. Los estaba cargando en las variables calificadas para el espacio de nombres para evitar el espacio de nombres global saturado.
Como Hail-Mary, traté de cargarlas en variables globales (no calificadas para el espacio de nombres).
Para mi sorpresa, el cuerpo de la función se ejecutó en menos de la décima parte del tiempo simplemente usando variables globales para mantener mis tablas de búsqueda estáticas, en lugar de las que están calificadas para el espacio de nombres. Para enfatizar, estas tablas ya residen en la memoria antes de llamar a la función; No se trata de poblarlos, se trata de hacer referencia a ellos.
¿Otras personas tienen esta experiencia?
(He adjuntado una captura de pantalla de la pantalla de depuración para que pueda ver los tiempos comparativos. Solo estoy comparando el cuerpo de las funciones aquí, para que no veas el envoltorio de la función.)

Puedo confirmar que en JMP 15 y JMP 16 hemos trabajado para hacer que las búsquedas en el espacio de nombres sean más rápidas y mucho más rápidas. Siempre serán más lentos que usar el espacio de nombres global porque tenemos que hacer búsquedas en ambos lados de los dos puntos (:), pero han mejorado mucho desde el momento de la publicación original.