私たちのプログラムは現在、libxml2 DOM API(xmlReadFile
)を使用してファイル全体をメモリにロードしています。残念ながら、 libxml2 DOMの基本的なメモリ消費量は基本ファイルサイズの約4〜5倍であるため、これは「大きな」XMLファイルに分類されます。
ツリー全体をメモリに保存したくない場合、libxml2はXMLを読み取るための2つのAPI、 SAX2とxmlReaderを提供しているようです。
私はまだAPIを掘り下げていませんが、どのような状況でどちらが好ましいのか疑問に思っていますか?
注:XMLファイルで行う必要があるのは、一部のC++データ構造にXMLファイルで見つかったデータを入力することだけです。そして、これらは(非常に冗長な)XML定義よりもはるかに小さくなります。現時点ではxmlReadFile
、DOM APIを使用すると、プロセスは20MBのXMLファイルに対して約100MBのメモリを使用します。このようなファイルのメモリ内のC++データは5MBに近いので、1:4から4:1に変更できます。これは、すでに大いに役立ちます。