Autolayout性能优化
客户的需求就是我们进步的动力。
最近有客户提出大数据量Topo图的自动布局问题,在Topo中除了Node、Link,还包括Group、Subnetwork等容器组件。在这样的情况下,我们抛开布局算法不谈,主要分析如何提高布局的性能,如何让TWaver能够支持更强大的数据量,让整体的布局效果更人性化。
首先我们应该去发现问题的根源,当TWaver支持大数据量时候,布局效果不佳,那么我们PC都在做什么呢,“它的时间都去哪了呢”?
不难发现,当我们创建N个节点的时候,TWaver会不断的刷新和绘制这些节点,其中最耗时间的莫过于DrawImage,因为每个节点Default情况下都有个默认的Image(当然vector情况下例外)。可见,我们PC的时间都花在DrawIamge上面了,从而影响了整体的性能。
那么如何解决这个问题呢?
其实也很简单,大数据量的布局,overView情况下,我们很难看清晰每个节点,那么既然看不清的节点我们为什么还花费大量的时间去认真的绘制它呢?想想是这样吧,只要当zoom值小于某个threshold,我们就用vector的图形(Rect或者Cicle)代替节点,既提高了性能,而且也提高了视觉享受。来看看这样布局的效果。
图1 所有的Group都合并 图2 所有的Group均展开
图4 熟悉的面孔出现了(zoom>=threshold)
算法的改进还有很多,比如我们也可以在zoom值很小的时候放弃绘制attachment等等。
经过不断测试,这样的方法的确使得布局效果有一定的改善,当然更大的改善还需要布局位置的计算算法和显示的算法相结合,这样才能达到更佳的效果。
最新文章
- 首页自动生成静态化html
- TorgoiseGit配置ssh密钥
- windows服务 2.实时刷新App.config
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
- Oracle SQL*plus常用的命令和函数
- 阿里云中Centos下配置防火墙
- 2-sat 输出任意一组可行解&;拓扑排序+缩点 poj3683
- SQL-AdventureWorks样例数据库
- hdu 4455 动态规划
- JWS-webservice 与Axis2-webservice的高速实现
- html进阶css(5)
- 五毛的cocos2d-x学习笔记08-动画
- Hdu 1158 Employment Planning(DP)
- python学习笔记之八:迭代器和生成器
- android修改HOLO对话框风格
- git常用命令总结--廖雪峰老师Git教程命令总结
- Python——爬虫——爬虫的原理与数据抓取
- Hadoop记录-Hadoop监控指标汇总
- css3火焰文字样式代码
- 浅尝Java(一)