Autolayout性能优化

Posted jzssuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Autolayout性能优化相关的知识,希望对你有一定的参考价值。

客户的需求就是我们进步的动力。
近期有客户提出大数据量Topo图的自己主动布局问题。在Topo中除了Node、Link,还包含Group、Subnetwork等容器组件。

在这种情况下,我们抛开布局算法不谈。主要分析怎样提高布局的性能。怎样让TWaver可以支持更强大的数据量,让总体的布局效果更人性化。


首先我们应该去发现问题的根源,当TWaver支持大数据量时候,布局效果不佳,那么我们PC都在做什么呢。“它的时间都去哪了呢”?
不难发现。当我们创建N个节点的时候。TWaver会不断的刷新和绘制这些节点。当中最耗时间的莫过于DrawImage,由于每一个节点Default情况下都有个默认的Image(当然vector情况下例外)。可见,我们PC的时间都花在DrawIamge上面了,从而影响了总体的性能。
那么怎样解决问题呢?
事实上也非常easy。大数据量的布局,overView情况下。我们非常难看清晰每一个节点,那么既然看不清的节点我们为什么还花费大量的时间去认真的绘制它呢?想想是这样吧,仅仅要当zoom值小于某个threshold,我们就用vector的图形(Rect或者Cicle)取代节点,既提高了性能,并且也提高了视觉享受。

来看看这样布局的效果。


技术分享                                                                     图1 全部的Group都合并技术分享                                                                      图2 全部的Group均展开技术分享                                                                       图3 不断放大(zoom<threshold)

技术分享                                                                      图4 熟悉的面孔出现了(zoom>=threshold)
算法的改进还有非常多,比方我们也能够在zoom值非常小的时候放弃绘制attachment等等。
经过不断測试,这个方案的确使得布局效果有一定的改善。当然更大的改善还须要布局位置的计算算法和显示的算法相结合,这样才干达到更佳的效果。









以上是关于Autolayout性能优化的主要内容,如果未能解决你的问题,请参考以下文章

性能优化有啥用

优化性能和优化内存有啥区别?

性能优化工具-MAT的使用

性能优化

iOS性能优化总结

性能优化方法论系列四性能优化的注意事项