データベクトルのコレクションと考えることができる、文字列識別子を含むASCII番号のテキストファイル(> 50k行)があります。ユーザー入力に基づいて、アプリケーションは実行時にこれらのデータ ベクトルの 1 つだけを必要とします。
私が見る限り、このテキスト ファイルから情報を取得するには 3 つのオプションがあります。
- テキスト ファイルとして保持し、実行時に必要なベクトルを抽出します。欠点は、コードに相対パスを含めることができないため、ユーザーはファイルの正しい場所 (?) を指定する必要があることだと思います。または、configure スクリプトを取得して絶対パスをマクロとして挿入します。
- xxdを使用して静的な unsigned char に変換し(ここで説明されているように)、結果のファイルを含めます。欠点は、5MB のファイルが 25MB のインクルード ファイルになることです。ランタイム中にこの 25MB がメモリにロードされるという考えは正しいですか?
- オブジェクトに変換し、こちらで説明されているようにobjcopyを使用してリンクします。これにより、ファイル サイズはほぼ同じに保たれているようです。他のトレードオフはありますか?
これを行うための標準/推奨方法はありますか? 違いがあれば、C または C++ を使用できます。
ありがとう。
(gcc を使用して Linux で実行)