【问题标题】:How to speed up chart rendering in Flex?如何加快 Flex 中的图表渲染?
【发布时间】:2010-11-09 19:48:04
【问题描述】:

我使用的是线性图表,但是当我添加一个新点时,当总点数约为 1200 点时,重新渲染会变得相当慢。当然,这是在相当慢的 PC(~600 MHz)上运行的。阅读有关如何加速渲染(关闭阴影、关闭 filterData 等)的 Flex 文档似乎没有帮助。我将我的图表绑定到一个 ArrayCollection(而不是我之前手动更新的数组),它似乎并没有更快。 Adobe 的文档似乎让我相信图表只查看自上次更新以来发生的变化,但我只添加一点!如果他们的信息是正确的,为什么当我有大约 1200 个点时更新一个点需要更长的时间(5 秒),而当我只有 2 个点时(瞬时)?

仅供参考 - 当我向 ArrayCollection 添加一个新点时,我必须执行“AC.refresh()”来让 DataBinding 获取新数据。关于我可以做些什么来加快这个过程的任何想法?

【问题讨论】:

  • 您是否考虑过平均点以在网格上显示更少的点,然后允许用户“缩放”到将显示更多点的网格部分?就像查看月份然后放大到一个月中的几周

标签: apache-flex


【解决方案1】:

任何在 flash/flex 中具有 1200 点的绘图在重绘时都会执行缓慢。当您添加一个额外的点时,您会使整个系列无效。一旦图表失效,它会在下一个可用的机会重新绘制自己。这次重绘会很慢。恐怕没办法。

我的观点是,为什么你需要在图表上随时显示 1200 个点。任何阅读此图表的人都无法获取所有这些信息。如果您需要显示这些点的趋势,那么您需要更改设计以显示平均值(根据 Chris 的评论)。您还可以使用其他策略。如果您查看Fiat Eco Drive 应用程序,我们会选择在任何时候仅显示最大范围。因此,即使我们可以有数百或数千个点,我们也只能显示一定数量的点。

还有很多其他策略可以解决这个问题,您确实需要重新审视图表设计,然后重构实际的图表构造。

【讨论】:

  • 我决定做的不是绘制所有值,而是将我的数据分成 2 分钟的“块”并绘制 2 个点:该“块”中的最大值和最小值。这样,我仍然可以看到数据中的峰值和谷值,而不会因平均而丢失。
【解决方案2】:

图表的渲染时间几乎来自于渲染系列,所以如果你只是改变dataProvider并保持系列的数量,图表将从第二次开始渲染得很好。

【讨论】:

    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 2010-10-15
    • 1970-01-01
    • 2014-12-20
    • 2013-12-07
    相关资源
    最近更新 更多