2011-12-07 10 views
2

私は約30のXMLファイルを持っています。私のC++プロセス(実行時)は解析してインストールする必要があります。コンパイル時のC++プログラムの巨大なデータ

実行時にXMLを使用する代わりに、XMLファイルを自分の構造にエンコードし、コンパイルしてビルドするC++プログラムを生成するスクリプトを書くことができないのはなぜですか?

私の言いたいことは、スクリプトでは、C++プログラムの変数の代入としてエンコードされた構造体を設定する必要があるということです。

class generatedCode 
{ 
private: 
    unsigned char = ox11, ox22.... 
}; 

よう

何かそれから私のC++プロセスがこれをデコードし、代わりにXML解析のインストールを行います。

私の意図は、すべてのXML情報を何らかの方法でC++プロセスメモリに持ち込むことです。

誰かがお勧めしますか、これは良い方法ですか?それを行う他の方法を示唆していますか?

+0

誰がこれらのXMLファイルを使用していますか?あなたのアプリケーションだけ? –

+0

これらのXMLファイルはどのくらいの頻度で変更されますか? XML解析のステップをスキップすることの重要性はどれくらいですか? –

+0

XSLTはオプションですか? .xmlファイルを必要なものに変換できます。 – FailedDev

答えて

1

実際にこれらのXMLファイルをよりコンパクトな表現に「コンパイル」(つまり変換)することができます。また、C++コードで表現するために巨大な配列を生成することさえあります。

これらのXMLファイルを内部表現に変換し、高速メモリ投影機構(Linuxの場合はmmapなど)を使用してアクセスするのが簡単なソリューションかもしれません。

しかし、あなたはこれらのXMLファイルが何を表しているのか、アプリケーションの後半でどのように使用したいのか説明しませんでした。

0

私はあなたの提案を正しく解釈していないかもしれませんが、XMLファイルで始まっているように思えます。また、xmlをC++コードに変換して解析するのを避け、インストールを行うためにコンパイルすることができます。

この「インストール」を繰り返し実行する場合は、この最適化が役立つかもしれません。しかし、あなたはXMLを解析することを避けているわけではありません。それらを解析してC++プログラムに変換する必要があります。したがって、余分なファイル(実行可能ファイル)を必要とするだけでなく、XMLが変更されるたびにXMLを再ビルドする必要がなくなり、実行ごとにXMLを再解析する必要がありません。

もちろんです。私が状況を誤解している場合、Roseanne Roseannadannaは「気にしない」と言っています:)

+0

ありがとうございます。私はxmlファイルをunsigned char配列に変換し始めました。しかし、私の疑問は依然として残っています。プログラムのロード時にメモリを割り当てることに問題がありますか?データセグメントまたはコードセグメントが爆発することになります。 –

関連する問題