Ho una funzione che devo essere veloce, dato che la sto usando in una formula di colonna su tabelle con righe 500K-21M.
Cercando di ottimizzare la velocità, ho fatto un po 'di benchmarking. Ho avuto la velocità più veloce che potevo, ed era ancora lento.
La mia funzione utilizzava alcune matrici come tabelle di ricerca. Li ho caricati in memoria in un passaggio precedente, nello script di avvio della mia sessione. Li stavo caricando in variabili qualificate per lo spazio dei nomi per evitare di ingombrare lo spazio dei nomi globale.
Come Hail-Mary, ho provato a caricarli invece in variabili globali (non qualificate per lo spazio dei nomi).
Con mia sorpresa, il corpo della funzione viene eseguito in meno di 1/10 del tempo semplicemente utilizzando le variabili globali per contenere le mie tabelle di ricerca statiche, piuttosto che quelle qualificate per lo spazio dei nomi. Per sottolineare, queste tabelle sono già residenti in memoria prima che la funzione venga chiamata; non si tratta di popolarli, si tratta solo di fare riferimento a loro.
Altre persone hanno questa esperienza?
(Ho allegato uno screenshot della schermata di debug in modo da poter vedere i tempi comparativi. Sto solo confrontando il corpo delle funzioni qui, quindi non vedi la funzione wrapper.)

Posso confermare che in JMP 15 e JMP 16 abbiamo lavorato per rendere più veloci le ricerche nello spazio dei nomi e sono molto più veloci. Saranno sempre più lenti rispetto all'utilizzo dello spazio dei nomi globale perché dobbiamo fare ricerche su entrambi i lati dei due punti (:), ma sono molto migliorati rispetto al tempo del post originale.