【问题标题】:iPhone Development: Core-Plot performance Slow when handling a huge dataiPhone 开发:处理大量数据时,Core-Plot 性能缓慢
【发布时间】:2012-02-10 07:39:39
【问题描述】:

iPhone 开发:处理大量数据时 Core-Plot 性能缓慢。

我尝试将 500 个数据放入 Plot。性能表明它真的很慢。

大多数烛台图都混合在一起......

请问有人有什么解决办法吗?

【问题讨论】:

  • 您应该使用 Instruments 来分析代码并查看其大部分时间花在哪里。

标签: iphone charts core-plot


【解决方案1】:
  1. 注意绘图区域的大小。如果您的数据点多于像素,请按照@benzado 的建议过滤数据集。

  2. 使用可快速绘制的图形元素——不透明的颜色、无渐变、无图像、无阴影。如果条形图只有几个像素宽,请不要同时设置填充线和边框线;使用哪个画得更快。

  3. 减少或消除无关元素,如小刻度线和网格线。

  4. 使用一种数据源方法,在一次调用中提供一组点,而不是一次提供一个。

    -(NSArray *)numbersForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange;
    -(double *)doublesForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange;
    -(CPTNumericData *)dataForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange;
    

【讨论】:

  • 非常感谢您的回复,埃里克。其实,我之前试过下载这个示例项目,但是当我编译它时有很多错误(我没有改变任何东西),它说找不到东西。我现在正在使用core-plot0.4开发烛台图形,但是现在最新的是0.9,你认为我应该换成0.9吗?如果我改变,我必须改变很多编码......
  • 我会更新的。自 0.4 版本以来发生了很多变化。许多错误修复和一些性能优化。不过,您必须对代码进行一些更改才能使其正常工作。如果您想一直保持最新状态,请使用 Mercurial 拉取最新代码。 1.0 版本几乎准备就绪,应该与现在可用的版本没有太大区别。
  • 嗨,又是我。我现在已经更改为 0.9。我正在尝试使用此功能来帮助我分离图形中的 1400 个数据 -(NSArray *)numbersForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange;您是否有一些示例在底部制作 UIScrollBar,向左滚动以更改数据范围,然后我不必同时指向图形中的所有 1400 个数据?
【解决方案2】:

我们对 iOS 图表进行了一些速度比较,其中之一是 Core-plot。不幸的是,Core-plot 太慢了,无法进行第一次测试!

还有其他图表组件能够更有效地处理大数据。

测试结果和测试设置在这里:https://www.scichart.com/ios-chart-performance-comparison

可以在此处找到四个主要图表 iOS 提供商之间的比较结果以表格格式。

披露,我是 SciChart 项目的技术主管

【讨论】:

    【解决方案3】:

    绘制数据样本!如果您实际上不需要全部绘制,请不要绘制所有 500 个数据点。

    【讨论】:

    • 感谢您的回复。因为我在做股票图表,所以我必须将所有500个或更多的数据放入其中。
    猜你喜欢
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 2012-04-30
    • 2017-01-03
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多