std::tr1::unordered_map, __gnu_cxx::hash_map and std::map with Boehm GC on Mosh
hash_func と equal_to と allocator を指定する例がほとんど見あたらなかったのでここに残す。
Mosh では __gnu_cxx::hash_map が 10% ほど残り2つと比べて速かった。
#ifdef USE_GNU_CXX_HASH_MAP #include <tr1/unordered_map> #include <ext/hash_map> struct hash_func { size_t operator()(scheme::Object const & s) const { return std::tr1::hash<word>()(s.val); } }; typedef __gnu_cxx::hash_map<scheme::Object, scheme::Object, hash_func, std::equal_to<scheme::Object>, gc_allocator<std::pair<const scheme::Object, scheme::Object> > > ObjectMap; #elif defined(USE_TR1_UNORDERED_MAP) #include <tr1/unordered_map> struct hash_func { size_t operator()(scheme::Object const & s) const { return std::tr1::hash<word>()(s.val); } }; typedef std::tr1::unordered_map<scheme::Object, scheme::Object, hash_func, std::equal_to<scheme::Object>, gc_allocator<std::pair<const scheme::Object, scheme::Object> > > ObjectMap; #else // std::map typedef std::map<scheme::Object, scheme::Object, std::less<scheme::Object>, gc_allocator<std::pair<const scheme::Object, scheme::Object> > > ObjectMap; #endif