我有一個我需要快速的功能,因為我在具有500K-21M行的表的列公式中使用它。
為了優化速度,我做了一些基準測試。我盡可能快地加速,而且速度仍然很慢。
我的函數使用了一些矩陣作為查找表。我在之前的步驟中,在我的會話啟動腳本中將這些加載到內存中。我正在將它們加載到名稱空間限定的變量中,以避免混亂的全局命名空間。
作為一個Hail-Mary,我嘗試將它們加載到全局(非命名空間限定的)變量中。
令我驚訝的是,函數的主體只在不到1/10的時間內執行,只需使用全局變量來保存我的靜態查找表,而不是命名空間限定的表。要強調的是,在調用函數之前,這些表已經駐留在內存中;它不是關於填充它們,它只是引用它們。
其他人有這種經歷嗎?
(我附上了調試屏幕的截圖,以便您可以看到比較時間。我只是在這裡比較函數的主體,所以你沒有看到函數包裝器。)

我可以確認,在JMP 15和JMP 16中,我們已經做了一些工作,以使名稱空間查找更快,並且查找速度更快。 它們總是比使用全局名稱空間慢,因為我們必須在冒號(:)的兩側進行查找,但是自原始發布以來,它們有了很大的改進。