??性能强悍的 TS 版 G6 来了,给您拜个早年??

作者 : 开心源码 本文共2259个字,预计阅读时间需要6分钟 发布时间: 2022-05-13 共259人阅读

AntV G6 是一款开源的图可视化引擎,专注于图可视化及图分析领域。

欢迎关注和?star?我们的 GitHub: antvis/G6

官网:https://g6.antv.vision/zh/

2020 年 1 月 16 日,新年代的 G6 3.3-beta 来了!这次,G6 主打性能提升与 TypeScript 化,一起来看看 G6 新特性吧!

??性能 upup

作为图可视化框架,G6 一般具备数据量大、图元数量多、动态升级频繁的特点,Canvas 渲染便成了 G6 最耗性能的痛点。

为处理这一问题,我们在 G6 3.3-beta?中全面更新了底层渲染引擎:使用局部渲染自动渲染推迟渲染自动裁剪机制,替换了原价动态升级图上单个元素便需要全局重绘的机制。

这一改进大大提升了交互体验,特别是在大数据下节点/边的高亮、选中、拖拽等交互。

在有 10000 个节点的图上,拖拽交互时的性能比照图如下。

(左)G6 3.2 及之前的版本,拖拽卡慢,推迟严重;(右)G6 3.3-beta,稍有拖尾,跟随顺滑。

在该图上对一个节点进行拖拽,可以看到在 G6 3.2 及之前的版本中(左图),拖拽十分卡慢,被拖拽节点基本无法跟随鼠标,交互体验极差。

更新后的 G6 3.3-beta?(右图)尽管在如此大数据量下的拖拽稍有拖尾现象,但被拖拽节点能够顺畅跟随鼠标。

下图记录了 G6 更新前后性能随节点数量添加而变化的情况,蓝色、绿色折线分别代表了更新前后的性能折线。

(左)节点总数与渲染帧率的关系;(右)节点总数与 CPU 使用率的关系。

上左图展现了随着图上节点总数(每个节点依然带有一个文本,因而图元数量是节点总数的两倍)添加,拖拽单个节点时画布的帧率变化。

在 7000 个节点的图上,更新前的 G6 帧率已经小于 2,基本无法正常交互;而更新后的 G6 在 17000 的图上依然有较高帧率。

上右图展现了在拖拽单个节点时,节点总数与 CPU 占用率的关系。

G6 3.2 版本中当节点数为 3000 时,CPU 占用率就达到 100% 了。而更新后的版本中,节点为 3000 时,CPU 占用率不到 75%,当节点数为 17000 时,CPU 占用率也没有到 100%。

??拥抱?TypeScript

在 TypeScript 大行其道,逐步成为前台开发首选的今天,G6 也不愿被时(大)代(家)抛弃。G6 3.3-beta?版本中,我们使用 TypeScript 完全重构了所有代码,完善的类型定义及错误提醒能够极大地提升研发人员的开发效率。

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

– 除了原价支持的节点关键图形的样式升级外,新版本支持了内置元素上其余图形的动态增删及样式升级:

(左)动态增删 label、linkPoints、icon;(右)动态升级卡片节点的副文本、增删 icon。

– 更自由稳固的布局配置:

(左)Grid 布局支持指定行列数;(中)Radial 布局支持指定同层节点聚类排布(右)Dagre 布局支持自动计算折线控制点,修复节点顺序敏感问题

??更丰富的构建产物

G6 3.3 版本中,我们提供多种构建产物:

– es:支持 es5 的产物;

– lib:支持 commonjs 的产物;

– dist:支持 UMD 的产物。

??测试覆盖率? upup

本次更新,我们进行了较为全面的测试:

– 行覆盖率 > 95%;

– 分支覆盖率 > 87%

立足当下

回顾刚刚过去的 2019,G6 进行了架构的全面更新,迎来了 全新的 G6 3.x。并从 3.0 一步一脚印地更新到了 3.3-beta。我们也真正明确了 G6 的定位:图可视化引擎

提升 Layout、组件、动画的地位,独立成机制,大大提升易用性和功能;针对分析场景添加了状态管理机制,在图分析场景下非常易用;移除了锚点和控制点机制。专注于图展现与分析,不再重点关注重编辑场景。

2019,也是 G6 更加开放的一年。G6 团队从一个人的小作坊变成了 5 人+ 的工作小组;从 1-2 个核心开发者变成了 10+ 人贡献代码;从社区隔离变成了有一个近 1000 人 的交流群。

G6 不再仅仅是一个开源代码库,它将会成为一个更加开放、更加包容和更加多元化的组织。

特别鸣谢

感谢所有 G6 的客户,有你们的反馈和督促,G6 才能更好地发展下去;特别感谢为 G6 贡献了代码的各位贡献者,正是有了你们的无私奉献,G6 才会更有信心持续地发展下去。

再次特别感谢对 G6 贡献了代码的各位贡献者:

下面仅列举了在 GitHub 上对 G6 3.x 的贡献者客户,排名不分顺序。

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

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

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

fanlinqiang????Cyrilszq????hujiulong

结语

G6 3.3-beta 版本的发布,预示了我们又迈出了新的一步,但这也仅仅只是开始。G6 3.3-beta 处理了困扰我们已有的性能问题,对 TS 开发者也更加友好,可是仍旧未能完全处理交互上的问题。对于所有已知的交互和事件上的问题,我们也一直在探究各种解法。希望在 G6 3.3 正式版发布时,能给大家一个满意的答案。

AntV G6?是一款开源的图可视化引擎,专注于图可视化及图分析领域。

欢迎关注和?star?我们的?GitHub: antvis/G6

官网:https://g6.antv.vision/zh/

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » ??性能强悍的 TS 版 G6 来了,给您拜个早年??

发表回复