Macos 画图形(线)非常快

Macos 画图形(线)非常快,macos,swift,Macos,Swift,我需要使用直线和仿射变换绘制大量数据点的图形(以缩放图形,使其适合视图) 目前,我正在使用NSBezierPath,但我认为它效率很低(因为点在绘制图形之前会复制到bezier路径)。我通过将我的数据切割成50个点块(NSBezier路径快得多)得到了改进 但我知道可能有更好的方法使用核心图形或CG。。。。函数调用 我的应用程序是用swift编写的。首先,如果可以的话:分析你的应用程序,并尝试确定你的性能瓶颈所在 我的经验是,核心图形在任何方面都不是很快 如果您想快速光栅化直线,您可能需要研究O

我需要使用直线和仿射变换绘制大量数据点的图形(以缩放图形,使其适合视图)

目前,我正在使用NSBezierPath,但我认为它效率很低(因为点在绘制图形之前会复制到bezier路径)。我通过将我的数据切割成50个点块(NSBezier路径快得多)得到了改进

但我知道可能有更好的方法使用核心图形或CG。。。。函数调用


我的应用程序是用swift编写的。

首先,如果可以的话:分析你的应用程序,并尝试确定你的性能瓶颈所在

我的经验是,核心图形在任何方面都不是很快


如果您想快速光栅化直线,您可能需要研究OpenVG实现(似乎有针对iOS的实现),甚至直接使用OpenGL。当然,这是假设快速渲染大量线条是您的应用程序的一个显著特点,值得付出努力。

请参阅感谢您的回复。是的,我的应用程序取决于它。目前,我使用的是
CGContextMoveToPoint
CGContextAddLineToPoint
CGContextStrokePath
,但我发现在路径中放置1000点要比仅放置100点慢得多。这意味着它实际上像贝塞尔路径一样绘制,尽管它只包含直线。我怎么能告诉系统只画直线?你是怎么得出这个结论的?我一直认为UIBezierPath只是CGPath周围的一个ObjC包装器,但在依赖它之前,我会仔细检查文档。根据苹果的说法,它确实是一个包装器:回到我的答案。CoreGraphics并不是以高帧速率绘制复杂动态矢量图形的最佳方式。我建议您至少评估一下其他方法如何适合您的问题,尤其是因为该功能对您的应用程序如此重要,您是如何得出这一结论的@克鲁默鲁:嗯,我做了测试。在2000 CGContextStrokePath中绘制100000个点比在1中绘制100000个点要快三个数量级。NSBezierPath也是如此。这就是为什么我总是在作图之前将数据切割成小块。从第1点到第50点,然后从第50点到第99点,等等。。。