5

小さなオブジェクトを処理するときにSTLで使用できるアロケータはどれですか。Boostのプールアロケータで遊んでみましたが、パフォーマンスは向上しませんでした(実際、かなりの劣化があった場合もあります)。

4

3 に答える 3

3

使用しているコンパイラについては言及していませんが、おそらく、事前に構築されたアロケータが多数付属しています。これはgcc4.2.1を搭載したMac上にあります:

〜$ find /usr/include/c++/4.2.1/ -name "* allocator *"
/usr/include/c++/4.2.1/bits/allocator.h
/usr/include/c++/4.2.1/ext/array_allocator.h
/usr/include/c++/4.2.1/ext/bitmap_allocator.h
/usr/include/c++/4.2.1/ext/debug_allocator.h
/usr/include/c++/4.2.1/ext/malloc_allocator.h
/usr/include/c++/4.2.1/ext/mt_allocator.h
/usr/include/c++/4.2.1/ext/new_allocator.h
/usr/include/c++/4.2.1/ext/pool_allocator.h
/usr/include/c++/4.2.1/ext/throw_allocator.h

独自のビルド方法について説明しているBitMagicプロジェクトページへのリンクもあります。また、 Lokiライブラリ(およびも)の小さなオブジェクトアロケータをチェックしてください。

于 2010-04-03T20:59:17.593 に答える
1

Microsoft Visual C ++標準ライブラリの実装は、ノードベースのコンテナー用にいくつかの独自のアロケータを提供します(少なくとも、間もなくリリースされるVisual Studio 2010の時点で)。

于 2010-04-03T20:57:06.893 に答える
1

あなたはあなたの特定のニーズに合ったアロケータを必要としています。STL汎用アロケータは、さまざまな状況に最適です。新しいアロケータが必要な場合は、特定の要件をプロファイリングして理解する必要があります。これらのオブジェクトを配置するコンテナについて、より具体的にする必要があります。

于 2010-04-03T23:53:49.470 に答える