【问题标题】:Performance out of windows C# chart controls?Windows C#图表控件的性能?
【发布时间】:2011-04-24 07:12:23
【问题描述】:

有没有人能够从实时运行的内置 c# 图表中获得良好的性能?

我制作了一个包含 3 个图表区域和 9 个系列的图表,它们都是快速线型。我会实时更新系列的时间点,并在绘制 7 秒的数据后移动图表。所有这一切都很好,但是我的图表更新速度非常慢。有时,输入的数据可能需要将近一秒钟的时间才能显示在图表中(很多时候我想知道它是否用我的数据准确地更新了我的图表,因为它太慢而且数据变化太快了)。

我已尝试使用 mychart.Series.SuspendUpdates()、Series.ResumeUpdates() 和 Series.Invalidate(),正如我在不同的帖子中看到的那样,没有明显的结果。

如果有人能分享一些关于优化方法的见解,我会非常感激。(减少数据点的数量不是有效的优化)

提前致谢 开路电压

【问题讨论】:

  • 就像任何性能问题一样,您知道哪种方法成本最高吗?您是否尝试过探查器?
  • 这一切都是在一个线程中进行的,还是你有一个数据处理程序和一个绘图线程?
  • 如果我收到客户对图表性能的任何投诉,我正计划编写一个分析器并测试瓶颈在哪里。我很确定我的大部分时间都花在了绘图调用期间,我已经让代码的数据部分在使用 3d 图形表示数据的程序中工作,并且我得到了 200fps+ 的帧速率,所以我知道数据正在获取计算并以合理的速度进入。
  • 至于线程,这一切都发生在一个线程上,但是我正在考虑添加一个线程。我想知道这是否会首先增加很多性能。

标签: c# performance optimization charts


【解决方案1】:

如果外部库是一个选项,ZedGraph 在以 10 毫秒间隔(最多 8 个系列)显示数据时对我来说非常有用。

如果你真的必须使用内置的 C#,我认为你可以通过将绘制数据分成单独的线程来防止阻塞。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多