TWaver - 專注UI技術(shù)

          http://twaver.servasoft.com/
          posts - 171, comments - 191, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Autolayout性能優(yōu)化

          Posted on 2014-09-03 11:07 TWaver 閱讀(3110) 評論(1)  編輯  收藏

          客戶的需求就是我們進(jìn)步的動力。
          最近有客戶提出大數(shù)據(jù)量Topo圖的自動布局問題,在Topo中除了Node、Link,還包括Group、Subnetwork等容器組件。在這樣的情況下,我們拋開布局算法不談,主要分析如何提高布局的性能,如何讓TWaver能夠支持更強大的數(shù)據(jù)量,讓整體的布局效果更人性化。
          首先我們應(yīng)該去發(fā)現(xiàn)問題的根源,當(dāng)TWaver支持大數(shù)據(jù)量時候,布局效果不佳,那么我們PC都在做什么呢,“它的時間都去哪了呢”?
          不難發(fā)現(xiàn),當(dāng)我們創(chuàng)建N個節(jié)點的時候,TWaver會不斷的刷新和繪制這些節(jié)點,其中最耗時間的莫過于DrawImage,因為每個節(jié)點Default情況下都有個默認(rèn)的Image(當(dāng)然vector情況下例外)。可見,我們PC的時間都花在DrawIamge上面了,從而影響了整體的性能。
          那么如何解決這個問題呢?
          其實也很簡單,大數(shù)據(jù)量的布局,overView情況下,我們很難看清晰每個節(jié)點,那么既然看不清的節(jié)點我們?yōu)槭裁催€花費大量的時間去認(rèn)真的繪制它呢?想想是這樣吧,只要當(dāng)zoom值小于某個threshold,我們就用vector的圖形(Rect或者Cicle)代替節(jié)點,既提高了性能,而且也提高了視覺享受。來看看這樣布局的效果。
                                                                               圖1 所有的Group都合并                                                                      圖2 所有的Group均展開                                                                       圖3 不斷放大(zoom<threshold)

                                                                                圖4 熟悉的面孔出現(xiàn)了(zoom>=threshold)
          算法的改進(jìn)還有很多,比如我們也可以在zoom值很小的時候放棄繪制attachment等等。
          經(jīng)過不斷測試,這樣的方法的確使得布局效果有一定的改善,當(dāng)然更大的改善還需要布局位置的計算算法和顯示的算法相結(jié)合,這樣才能達(dá)到更佳的效果。


          評論

          # re: Autolayout性能優(yōu)化  回復(fù)  更多評論   

          2014-09-04 11:26 by 連衣裙
          恩 學(xué)習(xí)到了 支持樓主一下

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 崇义县| 宁陕县| 星座| 淳安县| 泰来县| 德格县| 保山市| 安西县| 罗城| 内丘县| 武威市| 松潘县| 乌兰浩特市| 通渭县| 甘孜| 益阳市| 平罗县| 浦北县| 九台市| 阿克陶县| 洪湖市| 恭城| 藁城市| 湛江市| 梓潼县| 措勤县| 平山县| 岐山县| 龙陵县| 柳州市| 龙口市| 安达市| 东阳市| 准格尔旗| 瓦房店市| 宜昌市| 陇南市| 台江县| 胶南市| 富川| 普兰店市|