任務:數據庫中有六千余條目錄(id,pid,name)數據組成一棵目錄樹,需要通過WebService服務提供給客戶端顯示出來(Swing中的JTree)。
實現功能的第一步:在客戶端的樹顯示時通過網絡得到頂層目錄,再根據用戶的點擊逐級展開下級目錄。此方案優點:實現簡單;缺點:點擊多次容易使人厭煩,速度不行。
客戶端實現改善的第二步:啟動一個線程從服務器加載數據逐漸生成一個節點樹,再交給界面上的JTree命其更新。此舉對操作友好型有改進,速度上也有所提高。
客戶端實現改善的第三步:先起線程從服務器端一次性下載完全部數據,而后置入內存,再以此為基礎構建樹。此舉對速度也有明顯提高。
客戶端實現改善的第四步:將已經加載的節點從內存中刪除,使查找時間逐漸減小。此舉對速度有一定提高。
服務器端實現改善的第四步:不使用Hibernate的對象映射而單獨遴選字段組建成一個包裝類,此舉對速度有一定提高。
服務器端實現改善的第五步:直接采用優化的存儲過程將表中必要行集的數據在數據庫段形成大文本,一次性傳出,WS服務器端只負責傳輸,此舉對速度有明顯提高。
通過以上措施,完成包括六千個節點的樹顯示速度數量級的提高,綜合評價一下,以上逐步中,第三步:在客戶端另起線程從內存加載數據形成一棵完整的節點樹再通知界面更新 和 第五步:通過存儲過程直接取得行集合并結果對提高速度幫助最大。
實現功能的第一步:在客戶端的樹顯示時通過網絡得到頂層目錄,再根據用戶的點擊逐級展開下級目錄。此方案優點:實現簡單;缺點:點擊多次容易使人厭煩,速度不行。
客戶端實現改善的第二步:啟動一個線程從服務器加載數據逐漸生成一個節點樹,再交給界面上的JTree命其更新。此舉對操作友好型有改進,速度上也有所提高。
客戶端實現改善的第三步:先起線程從服務器端一次性下載完全部數據,而后置入內存,再以此為基礎構建樹。此舉對速度也有明顯提高。
客戶端實現改善的第四步:將已經加載的節點從內存中刪除,使查找時間逐漸減小。此舉對速度有一定提高。
服務器端實現改善的第四步:不使用Hibernate的對象映射而單獨遴選字段組建成一個包裝類,此舉對速度有一定提高。
服務器端實現改善的第五步:直接采用優化的存儲過程將表中必要行集的數據在數據庫段形成大文本,一次性傳出,WS服務器端只負責傳輸,此舉對速度有明顯提高。
通過以上措施,完成包括六千個節點的樹顯示速度數量級的提高,綜合評價一下,以上逐步中,第三步:在客戶端另起線程從內存加載數據形成一棵完整的節點樹再通知界面更新 和 第五步:通過存儲過程直接取得行集合并結果對提高速度幫助最大。