mirror of
https://github.com/boostorg/container_hash.git
synced 2025-08-03 22:44:38 +02:00
Add mulxp_hash to benchmark/unordered.cpp
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
// https://www.boost.org/LICENSE_1_0.txt
|
// https://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
#define _CRT_SECURE_NO_WARNINGS
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
#define _SILENCE_CXX20_CISO646_REMOVED_WARNING
|
||||||
|
|
||||||
#include <boost/container_hash/hash.hpp>
|
#include <boost/container_hash/hash.hpp>
|
||||||
#include <boost/unordered_set.hpp>
|
#include <boost/unordered_set.hpp>
|
||||||
@@ -12,6 +13,9 @@
|
|||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
# include "absl/hash/hash.h"
|
# include "absl/hash/hash.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_MULXP_HASH
|
||||||
|
# include "mulxp_hash.hpp"
|
||||||
|
#endif
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
@@ -188,6 +192,44 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// mulxp_hash
|
||||||
|
|
||||||
|
#ifdef HAVE_MULXP_HASH
|
||||||
|
|
||||||
|
struct mulxp0_hash_
|
||||||
|
{
|
||||||
|
std::size_t operator()( std::string const& st ) const BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return mulxp0_hash( (unsigned char const*)st.data(), st.size(), 0 );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mulxp1_hash_
|
||||||
|
{
|
||||||
|
std::size_t operator()( std::string const& st ) const BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return mulxp1_hash( (unsigned char const*)st.data(), st.size(), 0 );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mulxp2_hash_
|
||||||
|
{
|
||||||
|
std::size_t operator()( std::string const& st ) const BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return mulxp2_hash( (unsigned char const*)st.data(), st.size(), 0 );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mulxp3_hash_
|
||||||
|
{
|
||||||
|
std::size_t operator()( std::string const& st ) const BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return mulxp3_hash( (unsigned char const*)st.data(), st.size(), 0 );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
// test_hash_speed
|
// test_hash_speed
|
||||||
|
|
||||||
template<class H, class V> void test_hash_speed( int N, V const& v )
|
template<class H, class V> void test_hash_speed( int N, V const& v )
|
||||||
@@ -351,6 +393,12 @@ int main()
|
|||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
test_hash_speed<absl::Hash<std::string> >( N * 16, v );
|
test_hash_speed<absl::Hash<std::string> >( N * 16, v );
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_MULXP_HASH
|
||||||
|
test_hash_speed<mulxp0_hash_>( N * 16, v );
|
||||||
|
test_hash_speed<mulxp1_hash_>( N * 16, v );
|
||||||
|
test_hash_speed<mulxp2_hash_>( N * 16, v );
|
||||||
|
test_hash_speed<mulxp3_hash_>( N * 16, v );
|
||||||
|
#endif
|
||||||
|
|
||||||
std::puts( "" );
|
std::puts( "" );
|
||||||
|
|
||||||
@@ -378,6 +426,12 @@ int main()
|
|||||||
test_hash_collision<std::hash<std::string> >( N * 16, v, n );
|
test_hash_collision<std::hash<std::string> >( N * 16, v, n );
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
test_hash_collision<absl::Hash<std::string> >( N * 16, v, n );
|
test_hash_collision<absl::Hash<std::string> >( N * 16, v, n );
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_MULXP_HASH
|
||||||
|
test_hash_collision<mulxp0_hash_>( N * 16, v, n );
|
||||||
|
test_hash_collision<mulxp1_hash_>( N * 16, v, n );
|
||||||
|
test_hash_collision<mulxp2_hash_>( N * 16, v, n );
|
||||||
|
test_hash_collision<mulxp3_hash_>( N * 16, v, n );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -396,6 +450,12 @@ int main()
|
|||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
test_container_speed<K, absl::Hash<std::string> >( N, v );
|
test_container_speed<K, absl::Hash<std::string> >( N, v );
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_MULXP_HASH
|
||||||
|
test_container_speed<K, mulxp0_hash_>( N, v );
|
||||||
|
test_container_speed<K, mulxp1_hash_>( N, v );
|
||||||
|
test_container_speed<K, mulxp2_hash_>( N, v );
|
||||||
|
test_container_speed<K, mulxp3_hash_>( N, v );
|
||||||
|
#endif
|
||||||
|
|
||||||
std::puts( "" );
|
std::puts( "" );
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user