ハッシュコンテナ - Part3

ようやくVisual Studio 2008がリリースされました。 また、Google Sparse Hash 1.0.2GCC 4.2.2もリリースされていることなので、三度、パフォーマンス測定を行うことにします。今回は、素直にGoogle Sparse Hash 1.0.2に含まれているtime_hash_mapでパフォーマンス測定を行います。

先ずVisual Studio 2008ですが、Visual C++ 2008 Feature Pack Betaを用い、以下のコードを追加してstd::tr1::unordered_mapのパフォーマンス測定も行います。
#include <unordered_map>
using std::tr1::unordered_map;

template <class T>
struct hash : public std::unary_function<T, std::size_t>
{
  std::size_t operator()(T val) const { return val.Hash(); }
};
measure_map< unordered_map<HashObj, int, hash<HashObj> > >("TR1 UNORDERED_MAP", iters);
SPARSE_HASH_MAP:
map_grow               1953.0 ns
map_predict/grow       1031.0 ns
map_replace             437.0 ns
map_fetch               375.0 ns
map_fetch_empty         219.0 ns
map_remove              531.0 ns

DENSE_HASH_MAP:
map_grow                235.0 ns
map_predict/grow        172.0 ns
map_replace             141.0 ns
map_fetch               125.0 ns
map_fetch_empty          15.0 ns
map_remove              140.0 ns

STANDARD HASH_MAP:
map_grow                906.0 ns
map_predict/grow       1187.0 ns
map_replace             156.0 ns
map_fetch               141.0 ns
map_fetch_empty          32.0 ns
map_remove              516.0 ns

STANDARD MAP:
map_grow               1000.0 ns
map_predict/grow        906.0 ns
map_replace             172.0 ns
map_fetch               172.0 ns
map_fetch_empty          15.0 ns
map_remove              547.0 ns

TR1 UNORDERED_MAP:
map_grow               1141.0 ns
map_predict/grow       1203.0 ns
map_replace             156.0 ns
map_fetch               140.0 ns
map_fetch_empty          32.0 ns
map_remove              500.0 ns

次に、GCC 4.2.2ですが、こちらは以下のコードを追加してstd::tr1::unordered_mapのパフォーマンス測定も行います。
#include <tr1/unordered_map>
using std::tr1::unordered_map;

template <class T>
struct hash : public std::unary_function<T, std::size_t>
{
  std::size_t operator()(T val) const { return val.Hash(); }
};
measure_map< unordered_map<HashObj, int, hash<HashObj> > >("TR1 UNORDERED_MAP", iters);
SPARSE_HASH_MAP:
map_grow                350.0 ns
map_predict/grow        146.0 ns
map_replace              58.0 ns
map_fetch                65.0 ns
map_fetch_empty          15.0 ns
map_remove               86.0 ns

DENSE_HASH_MAP:
map_grow                 71.0 ns
map_predict/grow         22.0 ns
map_replace              14.0 ns
map_fetch                14.0 ns
map_fetch_empty           3.0 ns
map_remove               21.0 ns

STANDARD HASH_MAP:
map_grow                128.0 ns
map_predict/grow         83.0 ns
map_replace              24.0 ns
map_fetch                 6.0 ns
map_fetch_empty          14.0 ns
map_remove               54.0 ns

STANDARD MAP:
map_grow                542.0 ns
map_predict/grow        509.0 ns
map_replace             258.0 ns
map_fetch               253.0 ns
map_fetch_empty           9.0 ns
map_remove              489.0 ns

TR1 UNORDERED_MAP:
map_grow                162.0 ns
map_predict/grow        145.0 ns
map_replace              17.0 ns
map_fetch                19.0 ns
map_fetch_empty          22.0 ns
map_remove               48.0 ns

関連記事
ハッシュコンテナ
ハッシュコンテナ - Part2
ハッシュコンテナ - Part3

人気blogランキングへ にほんブログ村 IT技術ブログへ FC2ブログランキングへ

« 前頁へ移動する  | HOME |  次頁へ移動する »

ブログ内検索


このサイト内ウェブ全体
この検索は「緑のgoo」を利用しています

カテゴリー

未分類 (0)
C++ (24)
Books (11)
Bookmarks (1)

最近のエントリ

移植性の高いコードを書くためには (02/16)
ハッシュコンテナ - Part3 (01/10)
ハッシュコンテナ - Part2 (10/29)
日本語によるC++0xに関する記事 (10/23)
foreach (08/03)

Books

C++
プログラミング
デザインパターン
オブジェクト指向

RSSフィード

最新記事のRSS
最新コメントのRSS
最新トラックバックのRSS

アーカイブ

2008年02月 (1)
2008年01月 (1)
2007年10月 (2)
2007年08月 (1)
2007年07月 (2)
2007年06月 (1)
2007年05月 (2)
2007年04月 (1)
2007年03月 (2)
2007年02月 (2)
2007年01月 (3)
2006年12月 (4)
2006年11月 (8)
2006年10月 (6)

連絡先

email.png

Amazon