diff --git a/benchmark/unordered.cpp b/benchmark/unordered.cpp index ef81aca..cffed1a 100644 --- a/benchmark/unordered.cpp +++ b/benchmark/unordered.cpp @@ -163,6 +163,28 @@ template<> struct fnv1a_hash_impl<64> struct fnv1a_hash: fnv1a_hash_impl< std::numeric_limits::digits > {}; +// old_boost_hash + +class old_boost_hash +{ +public: + + std::size_t operator()( std::string const& st ) const BOOST_NOEXCEPT + { + char const * p = st.data(); + std::size_t n = st.size(); + + std::size_t h = 0; + + for( std::size_t i = 0; i < n; ++i ) + { + h ^= static_cast( p[i] ) + 0x9e3779b9 + ( h << 6 ) + ( h >> 2 ); + } + + return h; + } +}; + // template void test4( int N, V const& v, char const * hash, S s ) @@ -295,6 +317,7 @@ int main() test2( N * 16, v ); test2( N * 16, v ); test2( N * 16, v ); + test2( N * 16, v ); test2 >( N * 16, v ); test2 >( N * 16, v ); @@ -305,6 +328,7 @@ int main() test3( N, v ); test3( N, v ); test3( N, v ); + test3( N, v ); test3 >( N, v ); test3 >( N, v );