新石英和我在简单的形状,渐变和阴影的绘制速度好奇; 具体地比较石英绘图功能在iPhone上石英图像绘制。
说我需要绘制填充,描边,阴影和矩形。 我假设导入预焙RECT作为PNG和使用drawInRect绘制它:或drawAtPoint:比使用Quartz的绘图功能画出同样的事情,因为后者需要明确的计算速度更快。 在另一方面,绘制图像我想增加内存使用和应用程序的大小,因为我要导入的图像,然后ALLOC它。 这听起来确实对吗?
除此之外,是否有任何大的优势/劣势无论是技术? 正如有人谁是非常熟悉图形程序和全新的以石英,我想,以决定是否有任何优势,使用绘图功能在我的代码,而不是预烘焙整个UI和导入图像。
我也有类似的问题,所以我超时了不同的方法。 在最简单的绘图情况下(如您的长方形的例子),加载到内存中的图像似乎比拉一个,可能是由于所需的磁盘访问速度稍慢。 在这种情况下,我已经谈妥使用的仅仅是因为他们给我的灵活性Quartz的绘图程序。 如果我想换一个UI元素的大小在未来(或许以支持更大或更高分辨率的显示器),我需要重新渲染我的所有图片,其中矢量绘图规模将根据需要的。
一个领域,我没有看到一个显著的性能取胜是一个大的径向渐变,我画作为背景。 在鲨鱼,我可以看到CGContextDrawRadialGradient()调用嚼了大量的CPU时间。 当我取代了石英绘制放射渐变具有静态图像,只见在应用程序的启动时间明显减少(该背景在应用程序启动放置)。 奇怪的是,我还约0.5 MB,这是我不能完全解释看到应用程序的内存使用量减少。
如果你想这个测试自己,我强烈建议拿起图像编辑器不透明度 ,其可以产生绘图(包括一个完整的UIView或CALayer的子类)石英码,以及输出相同的图形的PNG。 这使得它容易实现应用程序中的两个路径,并测试他们。
还有可能的工作,这取决于你的应用程序结构的中间地带:实现绘图代码,而是画成层,然后再用它。 这具有不嚼起来的CPU时间超过一次,但仍保持了拉丝工艺的动态优势。
所以说,当药片最后轮船(现在的任何一天!),你可以返工您的绘图参数有点涵盖所有可能的设备,而不是产生一大堆不同的静态图像。
文章来源: iPhone Performance Differences in Quartz Drawing vs. Pre-Baked Images (which I guess simplifies to Quartz vs. Quartz)