我应该压缩内存中的C#对象以获得更好的性能吗?

Sau*_*aul 10 .net c# wpf performance

我有一个应用程序(C#,WPF)显示许多金融图表,其中包含来自服务器的实时数据流.在内存中收集的数据可能会变得有点大,我不想在磁盘上保留任何数据.

由于历史数据本身没有变化,只是添加了,是否有意义将数据(存储在集合对象中)保存为某种压缩格式?

是否有可能,如果有的话,任何人都可以推荐一个好的做法吗?

UPDATE

关于性能和权衡的一些注意事项:我知道压缩会增加访问数据的延迟,但是,用户只需要对到达的新数据进行快速更新.访问已经渲染的数据(例如,研究或重新渲染)时,他不需要快速响应.

Ern*_*rno 13

压缩和解压缩会使您的应用程序变慢,因此对于性能(速度)而言,这不是一个好的选择.压缩仅在您担心可用内存时才有用.将数据存储/交换到临时文件夹可能更容易.

绩效的关键是衡量.只有在你碾压数字时才采取行动.


Ree*_*sey 6

压缩数据在内存使用方面具有优势,但在使数据无法使用方面存在缺点(您必须将其解压缩才能再次使用),以及占用额外的CPU.

如果没有更多信息,很难知道这会变得有利的权衡点 - 这取决于你.但是,如果您没有使用这个旧的陈旧数据,最好将它扔掉(即:让它超出范围/停止存储它)而不是压缩它.

压缩可以通过System.IO.Compression中的类完成,并且非常简单.但是,这些类通常表现不佳,因此您可能还想考虑第三方替代方案,例如DotNetZip.