Ich habe eine Funktion, die ich schnell sein muss, da ich sie in einer Spaltenformel für Tabellen mit 500K-21M-Zeilen verwende.
Beim Versuch, die Geschwindigkeit zu optimieren, habe ich ein Benchmarking durchgeführt. Ich habe die Geschwindigkeit so schnell wie möglich gesteigert und es war immer noch langsam.
Meine Funktion verwendete einige Matrizen als Nachschlagetabellen. Ich habe diese in einem früheren Schritt in meinem Sitzungsstart-Skript in den Speicher geladen. Ich habe sie in namespace-qualifizierte Variablen geladen, um den globalen Namespace nicht zu stören.
Als Hagel-Mary habe ich versucht, sie stattdessen in globale (nicht für den Namensraum qualifizierte) Variablen zu laden.
Zu meiner Überraschung wurde der Rumpf der Funktion in weniger als einem Zehntel der Zeit ausgeführt, nur indem globale Variablen verwendet wurden, um meine statischen Nachschlagetabellen zu speichern, und nicht für namespace-qualifizierte. Um zu betonen, sind diese Tabellen bereits vor dem Aufruf der Funktion im Speicher vorhanden. Es geht nicht darum, sie zu besiedeln, es geht nur darum, auf sie zu verweisen.
Haben andere Leute diese Erfahrung?
(Ich habe einen Screenshot des Debug-Bildschirms angehängt, damit Sie die Vergleichszeiten sehen können. Ich vergleiche hier nur den Körper der Funktionen, so dass Sie den Funktions-Wrapper nicht sehen.)

Ich kann bestätigen, dass wir in JMP 15 und JMP 16 einige Arbeiten durchgeführt haben, um die Suche nach Namensräumen zu beschleunigen, und sie sind viel schneller. Sie sind immer langsamer als die Verwendung des globalen Namespace, da wir auf beiden Seiten des Doppelpunkts nachschlagen müssen (:), aber sie wurden seit dem Zeitpunkt des ursprünglichen Beitrags erheblich verbessert.