DataPointCollection清除性能

问题描述 投票:10回答:1

我有这两个示例:

1例:

    Series seria = new Series("name");
    for(int i = 0 ; i < 100000 ; i++)
    {
        seria.Points.Add(new DataPoint(i, i));
    }

    seria.Points.Clear(); // - this line executes 7.10 seconds !!!!!!!!!!

[SeriesSystem.Windows.Forms.DataVisualization dll中的类

2示例:

    List<DataPoint> points = new List<DataPoint>();
    for (int i = 0; i < 100000; i++)
    {
        points.Add(new DataPoint(i, i));
    }

    points.Clear();   // - this line executes 0.0001441 seconds !!!!!!!!!!
  • 为什么这些Clear方法之间有如此大的差异?
  • 我如何更快地清除seria.Point?
c# collections clear mschart
1个回答
9
投票

这是一个众所周知的问题:performance problem in MSChart DataPointCollection.Clear()

建议的解决方法如下:

public void ClearPointsQuick()
{
    Points.SuspendUpdates();
    while (Points.Count > 0)
        Points.RemoveAt(Points.Count - 1);
    Points.ResumeUpdates();
}

固有地,在清除点时,数据可视化工具应该已经暂停更新,但不是!因此,上述解决方法将比仅调用Points.Clear()快一百万倍(当然,在修复实际错误之前)。

© www.soinside.com 2019 - 2024. All rights reserved.