gpt4 book ai didi

c# - 动态添加点到 C# 图表的性能问题

转载 作者:太空宇宙 更新时间:2023-11-03 21:34:49 26 4
gpt4 key购买 nike

我有一个大图表有超过 16000+ 个点。在向图表末尾动态添加一个点时,图表因此面临繁重的重绘工作。当数据频率较高时,图表几乎死机,CPU 满载。

您有优化此性能的想法吗?

有没有可能让图表只重绘新的部分而不是整个图表?我只是简单地使用 AddXY 在集合中添加新点。我可以看到,只要我添加动态代码,程序就会卡住。

fullChart.Series["LastPriceSeries"].Points.AddXY(time, mktData.LastPrice);
fullChart.Series["HighSeries"].Points.AddXY(time, mktData.AskPrice1);
fullChart.Series["LowSeries"].Points.AddXY(time, mktData.BidPrice1);
fullChart.Series["VolumeSeries"].Points.AddXY(time, volume);

提前致谢。

最佳答案

有几个优化 MSCharts 的技巧。

请尝试将您添加点的代码部分括起来

mySerie.Points.SuspendUpdates();
...
mySerie.Points.ResumeUpdates();

16000 点很多。一种好的优化技术在于使用抽取算法,将显示点的数量限制为图形的实际宽度。

例如,我建议将所有需要的点保留在一个数组中,然后使用移动平均值或简单地绕过数量点将其重新采样到另一个较小的数组。这是一个非常快速的过程。

然后,生成的数组可以直接绑定(bind)到 MSChart 系列。

关于c# - 动态添加点到 C# 图表的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22295408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com