500K-21M行のテーブルの列式で使用しているので、高速にする必要があるという機能があります。
速度を最適化しようとして、私はいくつかのベンチマークをしました。私は可能な限り速くスピードを上げました、そしてそれはまだゆっくりでした。
私の関数はルックアップテーブルとしていくつかの行列を使用しました。セッション起動スクリプトの前のステップで、これらをメモリーにロードしました。私は、グローバルな名前空間を乱雑にしないためにそれらを名前空間修飾変数にロードしていました。
私はHail-Maryとして、代わりにそれらをグローバルな(名前空間で修飾されていない)変数にロードしようとしました。
驚いたことに、関数の本体は、名前空間で修飾されたものではなく、単にグローバル変数を使用して静的ルックアップテーブルを保持することによって、1/10未満の時間で実行されました。重要なことに、これらのテーブルは関数が呼び出される前にすでにメモリに存在しています。それはそれらを移入することではなく、単にそれらを参照することです。
他の人はこの経験を持っていますか?
(デバッグ画面のスクリーンショットを添付したので、比較のタイミングがわかります。ここでは関数の本体を比較しているだけなので、関数ラッパーは表示されません。)

JMP15とJMP16では、名前空間の検索を高速化するためにいくつかの作業が行われ、それらがはるかに高速になっていることを確認できます。 コロン(:)の両側でルックアップを実行する必要があるため、グローバル名前空間を使用するよりも常に遅くなりますが、元の投稿の時点から大幅に改善されています。