我有一个应用程序,它发出一个HTTP请求,以JSON格式返回大量数据。收到响应后,应用程序将其反序列化为JSON,然后将其转换为DataTable
对象,然后将其指定为DataSource
对象的DevExpress.XtraGrid.GridControl
。这种方法的问题在于一切都在内存中完成,如果返回一个非常大的响应,将消耗大量内存(有时> 1GB)。因此,我正在努力减少内存消耗。
在处理HTTP响应和JSON反序列化时减少内存使用似乎很简单 - 我只需要切换到使用流解析数据而不是消耗巨大的字符串。我不确定的是将JSON流转换为GridControl
可以使用的内容而不将其全部加载到内存中。
我正在设想将数据存储在一些临时文件中,该文件支持我可以分配给DataSource
的对象。我们的用户将快速滚动和过滤这些数据,所以我希望性能仍然非常活泼。换句话说,我需要将它存储在一些二进制结构中,允许快速读取/扫描表而无需进行太多的解析。像SQLite这样的东西可以工作,除了我想要更简单的东西。我对* nix比.NET更熟悉,所以我不太清楚.NET选项是什么。
什么是一个好的库/组件用于这样的事情?根据{{3}},我们对DataSource
可以使用的对象有相当大的灵活性。
如果组件在内存中启动并且只有在内存超过阈值时才溢出到磁盘,那将特别好。
答案 0 :(得分:1)
我认为你使用SQLite的想法可能是最有效的方法,但是我建议使用Entity Framework(简单),或者像dapper(快速)这样的微型ORM来填充它,不要浪费你的时间摆弄连接。