我正在为内存有限的嵌入式系统开发Qt应用程序。我需要收到几兆字节的JSON数据,并尽快解析它,不要使用太多内存。
我在考虑使用流:
JSON源(HTTP客户端)---> ZIP解压缩器---> YAML解析器---->映射到数据库的对象
数据将从网络到达的速度比解析它的速度慢得多。
答案 0 :(得分:0)
由于您有内存限制且数据已经是JSON,因此您应该使用低内存JSON解析器而不是YAML解析器。试试jsoncpp - 虽然我不确定他们对流媒体的支持是什么(因为JSON没有文档的概念)。
yaml-cpp 是设计用于流式传输,因此如果要解析文件但流仍处于打开状态,它将不会阻止;但是,yaml-cpp中有一个outstanding issue,它一次读取多个文档,所以它实际上不是为极低的内存使用而设计的。
至于解析1 MB数据需要多少内存,它可能大约为3 MB(原始输入流,加上解析后的流,加上结果数据结构),但它可能会有很大差异,具体取决于你正在解析什么样的数据。