【发布时间】:2011-01-31 00:07:18
【问题描述】:
我在长画布上画了很多线(想想条形图),并对其进行了相当好的性能调整,使用低级几何类并冻结它们等。这显着提高了性能,但仍然需要几秒钟将几千个项目加载到画布中。我对应用程序进行了性能分析,看起来每次调用canvas.children.add() 都花费了很大一部分时间。我已经读过这应该是一个轻量级的调用,并且由于我在一个方法中多次调用它,它不应该尝试在两者之间做任何繁重的事情......这可能还有其他原因吗如此多的时间?有什么办法可以加快速度吗?
性能并不差,但我担心以后当我需要处理更大的数据集时它可能会成为更大的问题。
仅供参考,在此示例中它看起来被调用了 1400 次,并且在现代/快速笔记本电脑上占用了将近 3 秒的 CPU 时间。
虽然画布包含在其他控件的层次结构中,所以我很好奇它们是否可能对此有所贡献。
额外说明:我也没有在画布上设置特定高度,因为它被设置为填充网格父容器。这可能是问题的根源吗?
【问题讨论】:
-
就性能而言,您可以尝试msdn.microsoft.com/en-us/library/… Stream Geometry,它是比绘图上下文最轻量级的构造。
-
是的,已经在使用流几何,并且效果很好。谢谢