??性能強(qiáng)悍的 TS 版 G6 來了淆九,給您拜個(gè)早年??

AntV G6 是一款開源的圖可視化引擎律想,專注于圖可視化及圖分析領(lǐng)域。

歡迎關(guān)注和?star?我們的 GitHub:https://github.com/antvis/G6

官網(wǎng):https://g6.antv.vision/zh/

2020 年 1 月 16 日匆瓜,新年代的 G6 3.3-beta 來了!這次未蝌,G6 主打性能提升與 TypeScript 化驮吱,一起來看看 G6 新特性吧!

??性能 upup

作為圖可視化框架萧吠,G6 一般具有數(shù)據(jù)量大左冬、圖元數(shù)量多、動(dòng)態(tài)更新頻繁的特點(diǎn)纸型,Canvas 渲染便成了 G6 最耗性能的痛點(diǎn)拇砰。

為解決這一問題,我們在 G6 3.3-beta?中全面升級(jí)了底層渲染引擎:使用局部渲染狰腌、自動(dòng)渲染除破、延遲渲染自動(dòng)裁剪機(jī)制,替換了原先動(dòng)態(tài)更新圖上單個(gè)元素便需要全局重繪的機(jī)制琼腔。

這一改進(jìn)大大提升了交互體驗(yàn)皂岔,特別是在大數(shù)據(jù)下節(jié)點(diǎn)/邊的高亮、選中展姐、拖拽等交互。

在有 10000 個(gè)節(jié)點(diǎn)的圖上剖毯,拖拽交互時(shí)的性能對比圖如下圾笨。

測試環(huán)境:Chrome on MacBook Pro with 2.5 GHz Intel Core i5, 16 GB 2133 MHz LPDDR3

(左)G6 3.2 及之前的版本,拖拽卡頓逊谋,延遲嚴(yán)重擂达;(右)G6 3.3-beta,稍有拖尾胶滋,跟隨順滑板鬓。

在該圖上對一個(gè)節(jié)點(diǎn)進(jìn)行拖拽,可以看到在 G6 3.2 及之前的版本中(左圖)究恤,拖拽十分卡頓俭令,被拖拽節(jié)點(diǎn)基本無法跟隨鼠標(biāo),交互體驗(yàn)極差部宿。

升級(jí)后的 G6 3.3-beta?(右圖)雖然在如此大數(shù)據(jù)量下的拖拽稍有拖尾現(xiàn)象抄腔,但被拖拽節(jié)點(diǎn)能夠順暢跟隨鼠標(biāo)瓢湃。

下圖記錄了 G6 升級(jí)前后性能隨節(jié)點(diǎn)數(shù)量增加而變化的情況,藍(lán)色赫蛇、綠色折線分別代表了升級(jí)前后的性能折線绵患。

測試環(huán)境:Chrome on MacBook Pro with 2.5 GHz Intel Core i5, 16 GB 2133 MHz LPDDR3

(左)節(jié)點(diǎn)總數(shù)與渲染幀率的關(guān)系;(右)節(jié)點(diǎn)總數(shù)與 CPU 使用率的關(guān)系悟耘。

上左圖展示了隨著圖上節(jié)點(diǎn)總數(shù)(每個(gè)節(jié)點(diǎn)仍然帶有一個(gè)文本落蝙,因此圖元數(shù)量是節(jié)點(diǎn)總數(shù)的兩倍)增加,拖拽單個(gè)節(jié)點(diǎn)時(shí)畫布的幀率變化暂幼。

在 7000 個(gè)節(jié)點(diǎn)的圖上筏勒,升級(jí)前的 G6 幀率已經(jīng)小于 2,基本無法正常交互粟誓;而升級(jí)后的 G6 在 17000 的圖上仍然有較高幀率奏寨。

上右圖展示了在拖拽單個(gè)節(jié)點(diǎn)時(shí),節(jié)點(diǎn)總數(shù)與 CPU 占用率的關(guān)系鹰服。

G6 3.2 版本中當(dāng)節(jié)點(diǎn)數(shù)為 3000 時(shí)病瞳,CPU 占用率就達(dá)到 100% 了。而升級(jí)后的版本中悲酷,節(jié)點(diǎn)為 3000 時(shí)套菜,CPU 占用率不到 75%,當(dāng)節(jié)點(diǎn)數(shù)為 17000 時(shí)设易,CPU 占用率也沒有到 100%逗柴。

??擁抱?TypeScript

在 TypeScript 大行其道,逐漸成為前端開發(fā)首選的今天顿肺,G6 也不愿被時(shí)(大)代(家)拋棄戏溺。G6 3.3-beta?版本中,我們使用 TypeScript 完全重構(gòu)了所有代碼屠尊,完善的類型定義及錯(cuò)誤提示能夠極大地提升研發(fā)人員的開發(fā)效率旷祸。

??更自由的元素與布局配置

- 除了原先支持的節(jié)點(diǎn)關(guān)鍵圖形的樣式更新外,新版本支持了內(nèi)置元素上其他圖形的動(dòng)態(tài)增刪及樣式更新:

(左)動(dòng)態(tài)增刪 label讼昆、linkPoints托享、icon;(右)動(dòng)態(tài)更新卡片節(jié)點(diǎn)的副文本浸赫、增刪 icon闰围。

- 更自由穩(wěn)定的布局配置:

(左)Grid 布局支持指定行列數(shù);(中)Radial 布局支持指定同層節(jié)點(diǎn)聚類排布(右)Dagre 布局支持自動(dòng)計(jì)算折線控制點(diǎn)既峡,修復(fù)節(jié)點(diǎn)順序敏感問題


??更豐富的構(gòu)建產(chǎn)物

G6 3.3 版本中羡榴,我們提供多種構(gòu)建產(chǎn)物:

- es:支持 es5 的產(chǎn)物;

- lib:支持 commonjs 的產(chǎn)物运敢;

- dist:支持 UMD 的產(chǎn)物炕矮。


??測試覆蓋率? upup

本次升級(jí)么夫,我們進(jìn)行了較為全面的測試:

- 行覆蓋率 > 95%;

- 分支覆蓋率 > 87%


立足當(dāng)下

回顧剛剛過去的 2019肤视,G6 進(jìn)行了架構(gòu)的全面升級(jí)档痪,迎來了 全新的 G6 3.x。并從 3.0 一步一腳印地升級(jí)到了 3.3-beta邢滑。我們也真正明確了 G6 的定位:圖可視化引擎腐螟。

提升 Layout、組件困后、動(dòng)畫的地位乐纸,獨(dú)立成機(jī)制,大大提升易用性和功能摇予;針對分析場景增加了狀態(tài)管理機(jī)制汽绢,在圖分析場景下非常易用;移除了錨點(diǎn)和控制點(diǎn)機(jī)制侧戴。專注于圖展示與分析宁昭,不再重點(diǎn)關(guān)注重編輯場景。

2019酗宋,也是 G6 更加開放的一年积仗。G6 團(tuán)隊(duì)從一個(gè)人的小作坊變成了 5 人+ 的工作小組;從 1-2 個(gè)核心開發(fā)者變成了 10+ 人貢獻(xiàn)代碼蜕猫;從社區(qū)隔離變成了有一個(gè)近 1000 人 的交流群寂曹。

G6 不再僅僅是一個(gè)開源代碼庫,它將會(huì)成為一個(gè)更加開放回右、更加包容和更加多元化的組織隆圆。

特別鳴謝

感謝所有 G6 的用戶,有你們的反饋和督促翔烁,G6 才能更好地發(fā)展下去渺氧;特別感謝為 G6 貢獻(xiàn)了代碼的各位貢獻(xiàn)者,正是有了你們的無私奉獻(xiàn)租漂,G6 才會(huì)更有信心持續(xù)地發(fā)展下去。

再次特別感謝對 G6 貢獻(xiàn)了代碼的各位貢獻(xiàn)者:

下面僅列舉了在 GitHub 上對 G6 3.x 的貢獻(xiàn)者用戶颊糜,排名不分順序哩治。

elaine1234????Shu-JI????huxiaoyu????zxc0328????Echo009????mage3k

Deturium????scaletimes????afc163????crystalwm????bzhangzju????hstarorg

vellengs????gaoli????lxfu????spengjie????EarlyH????zhengbigbig????Anderson-Liu

fanlinqiang????Cyrilszq????hujiulong

結(jié)語

G6 3.3-beta 版本的發(fā)布,預(yù)示了我們又邁出了新的一步衬鱼,但這也僅僅只是開始业筏。G6 3.3-beta 解決了困擾我們已有的性能問題,對 TS 開發(fā)者也更加友好鸟赫,可是依舊未能完全解決交互上的問題蒜胖。對于所有已知的交互和事件上的問題消别,我們也一直在探索各種解法。希望在 G6 3.3 正式版發(fā)布時(shí)台谢,能給大家一個(gè)滿意的答案寻狂。

AntV G6?是一款開源的圖可視化引擎,專注于圖可視化及圖分析領(lǐng)域朋沮。

歡迎關(guān)注和?star?我們的?GitHub:https://github.com/antvis/G6

官網(wǎng):https://g6.antv.vision/zh/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛇券,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子樊拓,更是在濱河造成了極大的恐慌纠亚,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筋夏,死亡現(xiàn)場離奇詭異蒂胞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)条篷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門骗随,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拥娄,你說我怎么就攤上這事蚊锹。” “怎么了稚瘾?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵牡昆,是天一觀的道長。 經(jīng)常有香客問我摊欠,道長丢烘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任些椒,我火速辦了婚禮播瞳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘免糕。我一直安慰自己赢乓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布石窑。 她就那樣靜靜地躺著牌芋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪松逊。 梳的紋絲不亂的頭發(fā)上躺屁,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機(jī)與錄音经宏,去河邊找鬼犀暑。 笑死驯击,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耐亏。 我是一名探鬼主播徊都,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼苹熏!你這毒婦竟也來了碟贾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤轨域,失蹤者是張志新(化名)和其女友劉穎袱耽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體干发,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朱巨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枉长。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冀续。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖必峰,靈堂內(nèi)的尸體忽然破棺而出洪唐,到底是詐尸還是另有隱情,我是刑警寧澤吼蚁,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布凭需,位于F島的核電站,受9級(jí)特大地震影響肝匆,放射性物質(zhì)發(fā)生泄漏粒蜈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一旗国、第九天 我趴在偏房一處隱蔽的房頂上張望枯怖。 院中可真熱鬧,春花似錦能曾、人聲如沸度硝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕊程。三九已至,卻和暖如春蚂斤,著一層夾襖步出監(jiān)牢的瞬間存捺,已是汗流浹背槐沼。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工曙蒸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捌治,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓纽窟,卻偏偏與公主長得像肖油,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子臂港,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 導(dǎo)讀 G6 是 AntV 旗下的一款專業(yè)級(jí)圖可視化引擎森枪,它在高定制能力的基礎(chǔ)上,提供簡單审孽、易用的接口以及一系列設(shè)計(jì)...
    kopiluwaky閱讀 1,568評論 0 0
  • 引言 —— 你看這錯(cuò)綜復(fù)雜的圖像不像早上沒梳頭的女盆友佑力?真想給她扎個(gè)美美的頭發(fā)呀式散。首先,你得....打颤。害暴拄,沒女友沒...
    kopiluwaky閱讀 554評論 0 0
  • 春天艾灸好處多乖篷,把這六個(gè)穴位灸透了,可祛除一身濕氣透且,很重要撕蔼! 春天陰雨綿綿,空氣中濕度高石蔗,濕氣容易入體罕邀,造成身體濕...
    金葉艾灸閱讀 2,214評論 0 0
  • 很幸運(yùn) 多年前我在那個(gè)小鎮(zhèn)出生 ...
    零更一閱讀 1,727評論 0 4
  • 圓角 border-radius使用一個(gè)半徑確定一個(gè)圓形,使用兩個(gè)半徑時(shí)確定一個(gè)橢圓一個(gè)值可規(guī)定四個(gè)角的圓角半徑兩...
    BOB_BI閱讀 202評論 0 3