2013-02-03

GoogleがB-tree実装のSTLコンテナを公開

C++ containers that save memory and time

cpp-btree - C++ B-tree - Google Project Hosting

Googleが、B-tree実装のSTLコンテナー(map, set, multimap, multiset)を発表した。

多くのSTLの実装では、map, set, multimap, multisetは、Red-Black treeで実装されている。Googleの発表によれば、B-tree実装のコンテナーは、赤黒木実装に比べて、速度が上がり、しかもメモリ消費量も削減できるとしている。

紹介まで。

B木は一つのノードに複数の要素を格納する。これにより、ポインターなどのオーバーヘッドを低減でき、メモリ消費量の削減につながる。また、複数の要素を一括してノードに詰め込むため、速度向上もあるのかもしれないが、そのへんはよくわからない。小さな要素を多数扱う際には好都合かもしれない。

STLのコンテナーをB木で実装する欠点としては、メンバー関数emplace系が実装できなくなることだ。というのも、B木ではひとつのノードに複数の要素が格納され、さらにノード単位でバランスを取っているので、単純に任意の順序を取る要素ひとつの都合だけで、ノードのつなぎ変えができない。つまり、置き換えはいかにも無理だ。

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.