JMP v19 圖形產生器在處理大型表格(1300 萬行以上)時的效能當我處理大型表格(約 1300 萬行)時,JMP v19 中的圖形產生器遇到了嚴重的效能問題。在 JMP v18 中,我能夠流暢地與相同資料集互動——平移、縮放和切換變數都很容易操作。這是一個大約 1300 萬行、幾十列的單表,運行在一個擁有 64 GB RAM 的大型工作站上。
然而,在 JMP v19 中,每當我嘗試建立或調整繪圖時,都會頻繁出現「沙漏」延遲和「JMP 無回應」的訊息。使用相同的數據和設置,回到 JMP v18 後,一切又恢復正常了。
我想知道是否有人注意到,自從升級到 JMP v19 後,圖形產生器在處理大型表格時的效能有所下降。如果是的話,JMP 或許值得研究一下版本之間的變化。
有沒有人找到有幫助的解決方法或設定(例如,記憶體首選項、GPU 設定等)?
數據探索與視覺化視窗回覆:JMP v19 圖形產生器在處理大型表格(1300 萬行以上)時的效能這裡有130萬行。我的印像是GB在JMP 18和19中回應都很慢。
回覆:JMP v19 圖形產生器在處理大型表格(1300 萬行以上)時的效能過去,我遇到嚴重的效能問題,這常常可以追溯到列公式的意外重新計算。
JMP18 中修復的一個嚴重問題:
為什麼選擇/取消選擇行會觸發重新評估列公式?
一些幫助:在 JMP 18 及更高版本中,此類重新計算會在狀態列中指示。
在 JMP 19 中,如果您希望收到重新計算的通知,您可以要求 JMP 通知您:
https://community.jmp.com/t5/Discussions/Undocumented-Secrets/mp/908936/highlight/true#M106749
如果這不是效能不佳的原因,您可以檢查記憶體消耗。如果記憶體由程式和顯示卡共享,那麼記憶體不足可能會導致嚴重的影響。
為了深入挖掘,您能否建立一個虛擬檔案供我們分析?
有時,問題特定於某種類型的數據或情節。
沒有人爭論為什麼 JMP19 中發生了一些變化 - 但我同意@雷塞爾的觀點:
對於許多類型的圖,一些 Mio 行是 JMP 開始響應遲緩的地方。
JMP 可以處理更大的資料文件,但有時使用者不想等待。
如果等待 0.5 秒還算可以接受,那麼 5 個 0.5 秒就感覺不舒服了。所以,如果 100 萬行感覺很順暢,那麼 500 萬行就沒意思了。
回覆:JMP v19 圖形產生器在處理大型表格(1300 萬行以上)時的效能我不知道這是否有用,但我在一台16GB的機器上運行著JMP 18。我剛剛在一個26列350萬行的文件上測試了圖形生成器,它運行速度很快,沒有任何延遲。
回覆:JMP v19 圖形產生器在處理大型表格(1300 萬行以上)時的效能我認為列數不會影響速度。
對於行來說,計算平均值的長條圖和所有單一資料點的點圖所需的時間是不同的。
例如,在我的舊筆記本上,計算 sin() 的箱線圖需要大約 6 秒,而計算 row() 的箱線圖則需要 2 秒 - 並且在 JMP 18 和 JMP19 中所需的時間相當可比。
計算點圖需要更長的時間,而且似乎:使用 JMP19 比使用 JMP18 長一點?
你的系統怎麼樣?

New Table( "test",
Add Rows( 10000000 ),
New Table Variable( "categories", 20),
New Column( "row",
Formula( Row() )
),
New Column( "sin",
Formula( Sin( :row / 10 ) )
),
New Column( "rnd",
Formula( Random Integer( :categories ) )
)
)
回覆:JMP v19 圖形產生器在處理大型表格(1300 萬行以上)時的效能在我的計算機上,所有列的填充尺寸均為 5'',大約如此。
JSL 本身的運行時間<0.1''。
這樣好嗎?我的意思是,1000萬行,我覺得完全可以接受。但是,把這些列放到GB大小的記憶體裡,它需要一段時間才能回應。不過,這比在Excel裡(我敢說是Excel)解決這樣的問題好得多。
回覆:JMP v19 圖形產生器在處理大型表格(1300 萬行以上)時的效能迂迴且可接受。
另一方面,想像即時渲染圖形遊戲需要多少次計算。
下一步:建立一個圖表。什麼是流暢的,沒有延遲的,什麼是等待時間過長?
為了獲得創建表的更精確的值,可以使用hptime() 。
並且考慮到列公式的計算,可以等待dt << run formulas 。
t0 = hp time ();
dt = New Table( "test",
Add Rows( 10000000 ),
New Table Variable( "categories", 20),
);
New Column( "row",
Formula( Row() )
);
New Column( "sin",
Formula( Sin( :row / 10 ) )
);
New Column( "rnd",
Formula( Random Integer( :categories ) )
);
dt << run formulas;
write("t(s): ", (hptime()-t0)/1000000)