[問題]請教 MFC CTreeCtrl 的效率問題

看板C_and_CPP (C/C++)作者 (Yo)時間16年前 (2009/05/21 01:57), 編輯推噓3(304)
留言7則, 2人參與, 最新討論串1/1
各位大大好, 最近小弟寫 MFC 的程式遇到CTreeCtrl的問題, 如果一個Parent HTREEITEM (named hParent) 有 6萬多個 child 一次要 insert完 需要很久的時間 小弟用 InsertItem("Text", hParent, TVI_LAST); 做Insert 小弟有用了幾個解法,但都不太好 1. SetReDraw(FALSE); //Do insert all child SetReDraw(TRUE); --> 沒有好很多 原本 2分鐘 , 少了 1~6 秒 2. InsertItem("Text", hParent, hInsertAfter); --> 沒有改善 3. InsertItem("Text", hParent, TVI_FIRST); --> 雖然快很多,可是多處程式要重新改寫 也變的比較不好懂 另外一個想法是用 Thread 作插入,這樣程式會改更多, 也會遇到一些同步的問題。 請解惑 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.210.165

05/21 03:09, , 1F
使用thread絕對不會比較快, 衍生出來的同步問題會搞死人
05/21 03:09, 1F

05/21 03:10, , 2F
你有把排序關掉嗎? 關掉排序應該可以快許多
05/21 03:10, 2F

05/21 03:14, , 3F
像這種極大量的child node, 打造一個專屬的ctrl會不會
05/21 03:14, 3F

05/21 03:15, , 4F
比較好?
05/21 03:15, 4F

05/21 03:18, , 5F
另外, 如果tree node沒有icon的話, 會不會比較快? try it..
05/21 03:18, 5F

05/21 09:49, , 6F
用virtual tree
05/21 09:49, 6F

05/21 09:49, , 7F
或者是等使用者展開才插入 資料另外維護
05/21 09:49, 7F
文章代碼(AID): #1A54IE4G (C_and_CPP)
文章代碼(AID): #1A54IE4G (C_and_CPP)