type
status
date
slug
summary
tags
category
icon
password
Property
Apr 12, 2023 03:46 AM
最近碰上了一个需求,要做一个桌面程序,功能是将一个文件格式解析成json,然后在图表上展示这个数据,但是这个文件可能有GB单位的大小,解析要防止爆内存,还有图形也要防止崩溃。
 
文件格式解析倒反而不是什么难点,主要是文件大小的问题以及格式,json是一种树状的类型,每个节点和上下文都是有关联的,如果全放内存中非常容易爆内存 ,但是这个数据结构的特性导致很难将已经解析好的一部分数据直接先持久化,不然存取是一个问题,所以持久化肯定需要一些媒介。
 
图形的问题并不是什么难题,渲染太多数据确实会导致崩溃,这个就需要做好图形的懒加载部分。
 
这样答案就已经很明显了,我采用的方法是使用一个嵌入式数据库来读写解析,将每个json节点的关系都放入数据库中。
网络数据库就没必要了,很容易会成为IO的瓶颈。
不过这样做也是有代价的,解析速度基本是由你的IO速度决定。
 
我最后对比了内存解析以及数据库解析:
内存解析比数据库解析快10倍,但是内存使用量是数据库解析的5倍,这还是解析一个只有50MB文件时的数据。
 
OrangePi R1 Plus LTSRust的一个函数参数签名问题
Loading...