タグ

ブックマーク / blog.goo.ne.jp/anoydevl (2)

  • 普通のset対unordered_set, 普通のアロケータ対boost.pool - 路傍のプログラマ

    set/unordered_setと普通のアロケータとboost.poolの組み合わせを比べてみたくなった。 ひょっとして変な相性問題とかあったりしないか?と心配になったので。 というわけで、ごそごそベンチマーク。 (テスト用コードは、Cryoliteさんのブログエントリ http://d.hatena.ne.jp/Cryolite/20061108 を参考にしました。この場を借りて、お礼申し上げます。) ソースコードは↓。コメントのところでset/unordered_set、allocator/fast_pool_allocatorを切り替えます。 ------------------------- #include <iostream> #include <set> #include <tr1/unordered_set> #include <tr1/functional> #incl

    普通のset対unordered_set, 普通のアロケータ対boost.pool - 路傍のプログラマ
    mogwaing
    mogwaing 2009/01/30
    set, unordered_set, unordered_set with boost::pool
  • set/unordered_set, allocator/boost.pool、続き - 路傍のプログラマ

    6/24のエントリはg++でやったのですが、VC++ 2008+Feature Packではどうか。 ・・・という内容のエントリを一瞬アップしたのですが、不具合に気づいたので、引っ込めました。もし読んだ方がいらっしゃったら、忘れてください。 原因は、stdlibのrand()関数の仕様の違い。g++のrand()はちゃんと32ビットの値を返す。VC++のrand()はなぜか16ビットの値を返す。 結果、生成した乱数をsetに入れていく、という部分がg++とVC++とで、全く違った意味合いの動作になってしまったのでした。 ソースをboost.randomを使ったものに書き直しました。 (煩雑なのでソースは示しませんが、 k.inabaさんのLet's boostのboost::randomのページを参考にしました。ありがとうございます。 http://www.kmonos.net/alang

    set/unordered_set, allocator/boost.pool、続き - 路傍のプログラマ
    mogwaing
    mogwaing 2009/01/30
    unordered_set + fast_pool_allocator が速い感じ?
  • 1