Core Plot使用大量内存

时间:2014-03-27 16:33:22

标签: ios memory core-plot

所以,我一直在玩Core Plot(iOS,1.5版),看看我能在多大程度上融入我的应用程序。我正在iPad 3上测试它,这通常是我的图形基础设备。

而不是粘贴大量代码,这是情节配置:

  • 1图表,使用纯白色主题
  • 1 Plot Space
  • 2个独立的散点图,每个绘图3个数据点。
  • 2轴:
    • XAxis:范围:2013年12月,2014年3月(NSTimeInterval)。 3个标签,3个主要蜱和约90个小蜱(每天1个)
    • YAxis:范围:0,250。3个标签,3个主要蜱虫,12个小蜱虫。 YAxis漂浮在图表的右侧。
    • 每个轴都有1个标题

因此,通常我的应用程序使用大约33-34 MB。如果显示一些图像,它可能会高达50 mb,但通常它将在33-34 mb范围内。但是,加载Core Plot会将内存跳转到大约63 MB。如果我启用缩放和捏合图形以缩放它我只需拖动图形,内存使用量峰值达到〜143 mb然后再回到84m​​b。当我关闭图形时,内存下降到大约22mb,我认为这是因为其他缓存因内存压力而被清除。

此外,可能相关,捏合和拖动图表非常慢。也许平均2-3 FPS下降到2 SPF(每帧秒数......严重)。

看起来Core Plot占用了大量的内存并且速度非常慢。

我错过了什么,或者这只是Core Plot的方式?除非我能加快速度并减少使用内存,否则我无法在生产中使用Core Plot。

更新
我用仪器来描述我的应用程序。除了所有内存增益都在Core Plot对象中(或从它们派生)之外,这里没有什么可说的。时间分析器显示,当我调整大小或移动绘图时,大部分时间都花费在源自drawInContext:方法的各种核心绘图渲染方法之一。具有讽刺意味的是,该方法的第一行是self.useFastRendering = YES;

我将补充一点,情节几乎全屏。我有几个其他控件来编辑绘图字段,图表类型等,但就是这样。

说实话,我有点希望我会错过与表演有关的某种财产,但事实似乎并非如此。 Core Plot可能适用于静态图,但它在交互性和性能方面落后。

我花了一些时间查看Shinobi Controls并查看他们的iOS演示。这正是那种交互性和在图表中我想要的表现。但我对在我的应用程序中包含昂贵,封闭的第三方代码感到谨慎......

我可能会花时间手工制作我的图表。

1 个答案:

答案 0 :(得分:0)

不幸的是,核心图是一个非常慢的库,在内存和CPU使用率失控之前只能处理几百个数据点。

还有其他图表组件能够更有效地处理大数据。有关详细信息,请查看https://stackoverflow.com/a/45589678/303612