我有这两个示例:
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 !!!!!!!!!!
[Series
是System.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 !!!!!!!!!!
这是一个众所周知的问题:performance problem in MSChart DataPointCollection.Clear()
建议的解决方法如下:
public void ClearPointsQuick()
{
Points.SuspendUpdates();
while (Points.Count > 0)
Points.RemoveAt(Points.Count - 1);
Points.ResumeUpdates();
}
固有地,在清除点时,数据可视化工具应该已经暂停更新,但不是!因此,上述解决方法将比仅调用Points.Clear()
快一百万倍(当然,在修复实际错误之前)。