诸岳

Results 34 comments of 诸岳
trafficstars

- G 4.0 的性能优化机制有四种,分别是 `局部渲染`、`异步渲染`、`自动渲染`和`渲染裁剪`,其优化思路与 zrender 不太一样。`分层渲染` 是一种比较典型而且容易实现的性能优化机制,但需要上层手动去做(设置 zlevel)。相对而言,`局部渲染` 的实现难度更大,但优化潜力也更大,且上层不需要感知,G 这一层会自动做掉。这种优化思路本质上是通过更少的数学计算成本来降低重绘成本,而数学上的优化是无穷尽的,因此 `局部渲染` 的潜力非常巨大。 - 有兴趣可以看下 G 4.0 的性能优化设计文档 https://www.yuque.com/antv/ou292n/pcgt5g

- 这种情况是存在的,尤其是对于复杂的 path 来说。但如果计算成本小于全局重绘的成本,那么还是可以接受的,即使在这些边界情况下的性能提升可能不会特别大。目前的思路可能是尽量减少不必要的计算步骤和次数,尽量保证计算成本最低。 - 比如这个性能优化的 PR #490,涉及到的性能优化手段有: 在 Group 层对 canvasBBox 加缓存(之前只在 Shape 层有缓存)、通过 pre-check 对真正要重绘的 element 进行标记、父子元素同时更新只将最顶层的父元素加入刷新队列等。 - 后续计划的性能优化手段有: - 结合 canvasBBox 进行拾取性能优化,最小化遍历次数; - 实现分片渲染,动态调节渲染帧率,交互会更流畅。

> * [ ] group 设置 clip 后进行动画,动画结束后将 clipShape 移除,group 上的图形也被移除了,复现 riddle: http://riddle.alibaba-inc.com/riddles/ebaecdaa > > ```ts > clipShape.animate({ > height: 160 > }, { > duration: 1000, > easing: 'easeQuadOut',...

- [ ] SVG 元素事件 mouseenter 等事件不响应: [https://riddle.alibaba-inc.com/riddles/75a38a00](https://riddle.alibaba-inc.com/riddles/75a38a00) - [x] SVG 调用 `canvas.draw()`,会重复绘制而没有清空之前的内容。 - [x] `canvas.set('autoDraw', false)` 不生效。

- [x] 箭头拾取和包围盒计算支持已有的 `startArrow` 和 `endArrow` 用法; - [ ] 增加新的接口 `setStartArrow()` 和 `setEndArrow()`,支持传入 shapeCfg,这样箭头可以是任意的 shape,箭头的自定义能力将会非常强大,并支持箭头动画。

- 目前还不支持在 canvas 上设置全局属性,包括矩阵和绘图样式。 - 这两个场景目前还没有遇到过,有相关的使用场景吗,或者哪个可视化库或者系统应用了这些场景呢?

- 画布缩放的时候,图形也会自动缩放吧。

@baizn G6 中的缩放、平移等整体操作是怎么做的呢,应该不是针对画布的吧。

> 单侧似乎报错了。 单测一直没有跑完,看了下其他 PR 也是这样,是否是项目配置的问题? ![image](https://github.com/antvis/G2Plot/assets/14918822/dab19cb9-829d-458a-911a-3d28c9dfc45d)