約 10Gb の Boost.MultiIndex 大きな配列があります。読み取りを減らすために、データをメモリに保持する方法が必要であり、別のクライアントプログラムがそれを読み取って分析できるようになると思いました。
それを整理する適切な方法は何ですか?
配列は次のようになります。
struct particleID
{
int ID;// real ID for particle from Gadget2 file "ID" block
unsigned int IDf;// postition in the file
particleID(int id,const unsigned int idf):ID(id),IDf(idf){}
bool operator<(const particleID& p)const { return ID<p.ID;}
unsigned int getByGID()const {return (ID&0x0FFF);};
};
struct ID{};
struct IDf{};
struct IDg{};
typedef multi_index_container<
particleID,
indexed_by<
ordered_unique<
tag<IDf>, BOOST_MULTI_INDEX_MEMBER(particleID,unsigned int,IDf)>,
ordered_non_unique<
tag<ID>,BOOST_MULTI_INDEX_MEMBER(particleID,int,ID)>,
ordered_non_unique<
tag<IDg>,BOOST_MULTI_INDEX_CONST_MEM_FUN(particleID,unsigned int,getByGID)>
>
> particlesID_set;
どんなアイデアでも大歓迎です。
よろしくアルマン。
編集: RAM とコアの数は制限されていません。現在、私は 16Gb と 8 コアを持っています。
アップデート
Boost.Users フォーラムで尋ねていたのと同じ質問で、Joaquín M López Muñoz (Boost.MultiIndex の開発者) から回答を得ました。答えははいです。Boost.Interprocess を使用して、プロセス間で multi_index を共有できます。詳細については、このリンクで確認できます