ジオメトリをブーストするのは初めてです。私の場合、大量のデータノードを処理する必要があるため、メモリに保存できません。ブースト ジオメトリをローカル ファイル システムと一緒に使用することはできますか?
1 に答える
一般的な答えは、IPC アロケーターを使用する (ブースト) コンテナーで Boost Interprocess (IPC) からのメモリ マップ ファイルを使用することです。[1]
これにより、(少なくとも 64 ビット プロセスでは) 透過的に (仮想的に) 無制限のデータ サイズで作業できるようになります。
ただし 、ページングは高価です。
Boost Geometry はシーケンシャル アクセス パターンに最適化されていない可能性が高いため、どのアルゴリズムが機能し、どのような順序でそれらを適用するかについて非常に厳密に検討する必要がある場合があります。そうしないと、この種のボリューム (簡単にするために 16Gb を超えると想定しています) をスケーリングすると、ページングのために実際には耐えられないほど遅くなります。
通常の状況では、重要なボリュームにスケーリングするには、アルゴリズムを調整するか、目的に合わせてターゲットを絞ったものを作成する必要があります。
目前の実際のタスクについての知識がなくても、試すことができます
- メモリ マップド データの割り当てから開始
- 一度に 1 つずつ、ゆっくりとアルゴリズムのステップを構築し始めます。
- プロファイラーを注意深く観察しながら、各ステップでデータセットを段階的に拡大します。
プロファイラーは、どのステップでパフォーマンスのボトルネックが発生し、どのボリュームでそれが識別可能になるかを示します。
[1] これにより、「無料」の永続性が得られます。ただし、適切な時期にトランザクションと fsync を行う責任があることに注意してください。また、連続した/連続したコンテナーが最適に機能します。