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