2010-02-27 80 views
4

我正在使用JUNG作爲項目,當我顯示比較大的圖形,例如1500個節點時,我的電腦將無法處理它(圖形被渲染,但如果我想導航圖形,系統變得非常慢)。有什麼建議麼。JUNG無法顯示大圖?

回答

2

因此,有兩件事情,JUNG可視化並不總是規模非常好,現在:

  1. 迭代力指向佈局
  2. 互動:找出哪個節點或邊緣(如果有的話)被懸停和點擊事件引用。

聽起來好像是後者現在正在運行。

根據您的要求,你有兩個選擇:

  • (一)關閉鼠標事件,或者至少懸停事件
  • (二)破解可視化系統,使事件的查找目標不是O(m + n)。

簡單的解決方案(b)基本上只是將查看區域劃分成小塊,並只發送事件到與指針位於同一塊的元素。 (很明顯,你製作的塊越小,需要的內存就越多。)

我們有計劃要做(b)(和設計草圖)一段時間,但一直在研究其他的東西。任何想要提供更持久解決方案的人,請與我聯繫。

+0

我不確定這些是最大的減速。圖形的平移/縮放會導致大量重繪()調用。這又會產生大量的'renderEdge'和'renderVertex'調用。頂點填滿第二位。根據我的經驗,這已經超過CPU時間的40%。有人說,我不知道當攝像機移動時你不會重新繪製頂點和邊緣...... – sdasdadas 2013-09-24 19:09:01

+1

夠正確。但是,當您平移和縮放時會出現這些問題,但這並不總是相關的,而佈局總是存在問題,並且經常出現懸停/點擊。順便提一句,你提出的問題是,爲什麼可視化系統有能力在沒有實際更新可視化的情況下提前佈局,直到你認爲它是穩定的,這至少可以防止在佈局更新期間殺死你的CPU(儘可能多)。 – 2013-09-26 04:58:45

+0

我現在正在研究同樣的問題 - 在覈心JUNG庫中最近兩年有什麼改進?滾動低於1000個節點的圖形時遇到嚴重滯後。 – Rekin 2014-12-18 09:42:32

2

啓動虛擬機的內存是多少?假設你在windows上工作,看着任務管理器,虛擬機是否達到了分配的最大內存量並開始使用交換?

0

問題可能在於計算頂點的位置。我發現相當容易計算的唯一佈局是樹佈局,顯然這不適用於所有數據集。

解決方案可能是編寫自己的自定義佈局,比使用FRLayout少得多的計算。