2012-10-17 21 views
0

在我的應用程序中,一個操作是展開某個樹的所有元素。TreeViewer.expandAll方法的性能

每次執行此操作時,所花的時間都比以前更長。

long startTime = System.currentTimeMillis(); 
getTreeViewer().expandAll(); 
long endTime = System.currentTimeMillis()-startTime; 
System.out.println("expandAll time : " + endTime); 

這是一個來自輸出的樣本。

expandAll時間:200 expandAll時間:800 expandAll時間:1800 expandAll時間:3200

- 這種放緩我的插件這麼多。這是該方法的問題嗎?

回答

1

你有過濾器嗎?在展開操作時調用篩選器和其他TreeViewer協作者。同時檢查LabelProvider的實現,看看在計算每個新顯示的樹項目的文本標籤和圖像時是否需要花費一些時間。

+0

是的,我有一個過濾器。但即使我禁用它,我也會有相同的表現。 我使用eclipse EMF生成提供商爲標籤和內容提供商 – becks

+0

確定。有多少樹項目被暴露,以及ContentProvider上getChildren()方法的價格是多少? –

+0

約100個項目。 getChildren需要幾毫秒。 ex: 當expandAll需要時,getChildren需要7 ms:1926 ms – becks