mirror of
https://github.com/boostorg/unordered.git
synced 2025-07-30 03:17:15 +02:00
Remove multi_index from benchmarks
This commit is contained in:
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
#include <boost/unordered_map.hpp>
|
#include <boost/unordered_map.hpp>
|
||||||
#include <boost/unordered/unordered_flat_map.hpp>
|
#include <boost/unordered/unordered_flat_map.hpp>
|
||||||
#include <boost/multi_index_container.hpp>
|
|
||||||
#include <boost/multi_index/hashed_index.hpp>
|
|
||||||
#include <boost/multi_index/member.hpp>
|
|
||||||
#include <boost/core/detail/splitmix64.hpp>
|
#include <boost/core/detail/splitmix64.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
@ -267,24 +264,6 @@ template<template<class...> class Map> BOOST_NOINLINE void test( char const* lab
|
|||||||
times.push_back( rec );
|
times.push_back( rec );
|
||||||
}
|
}
|
||||||
|
|
||||||
// multi_index emulation of unordered_map
|
|
||||||
|
|
||||||
template<class K, class V> struct pair
|
|
||||||
{
|
|
||||||
K first;
|
|
||||||
mutable V second;
|
|
||||||
};
|
|
||||||
|
|
||||||
using namespace boost::multi_index;
|
|
||||||
|
|
||||||
template<class K, class V> using multi_index_map = multi_index_container<
|
|
||||||
pair<K, V>,
|
|
||||||
indexed_by<
|
|
||||||
hashed_unique< member<pair<K, V>, K, &pair<K, V>::first> >
|
|
||||||
>,
|
|
||||||
::allocator< pair<K, V> >
|
|
||||||
>;
|
|
||||||
|
|
||||||
// aliases using the counting allocator
|
// aliases using the counting allocator
|
||||||
|
|
||||||
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
||||||
@ -384,14 +363,6 @@ template<class K, class V> using boost_unordered_map_fnv1a =
|
|||||||
template<class K, class V> using boost_unordered_flat_map_fnv1a =
|
template<class K, class V> using boost_unordered_flat_map_fnv1a =
|
||||||
boost::unordered_flat_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
|
boost::unordered_flat_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
|
||||||
|
|
||||||
template<class K, class V> using multi_index_map_fnv1a = multi_index_container<
|
|
||||||
pair<K, V>,
|
|
||||||
indexed_by<
|
|
||||||
hashed_unique< member<pair<K, V>, K, &pair<K, V>::first>, fnv1a_hash >
|
|
||||||
>,
|
|
||||||
::allocator< pair<K, V> >
|
|
||||||
>;
|
|
||||||
|
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
|
|
||||||
template<class K, class V> using absl_node_hash_map_fnv1a =
|
template<class K, class V> using absl_node_hash_map_fnv1a =
|
||||||
@ -428,12 +399,9 @@ int main()
|
|||||||
{
|
{
|
||||||
init_indices();
|
init_indices();
|
||||||
|
|
||||||
#if 1
|
|
||||||
|
|
||||||
test<std_unordered_map>( "std::unordered_map" );
|
test<std_unordered_map>( "std::unordered_map" );
|
||||||
test<boost_unordered_map>( "boost::unordered_map" );
|
test<boost_unordered_map>( "boost::unordered_map" );
|
||||||
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
||||||
test<multi_index_map>( "multi_index_map" );
|
|
||||||
|
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
|
|
||||||
@ -454,14 +422,11 @@ int main()
|
|||||||
test<tsl_robin_map>( "tsl::robin_map" );
|
test<tsl_robin_map>( "tsl::robin_map" );
|
||||||
test<tsl_robin_pg_map>( "tsl::robin_pg_map" );
|
test<tsl_robin_pg_map>( "tsl::robin_pg_map" );
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
test<std_unordered_map_fnv1a>( "std::unordered_map, FNV-1a" );
|
test<std_unordered_map_fnv1a>( "std::unordered_map, FNV-1a" );
|
||||||
test<boost_unordered_map_fnv1a>( "boost::unordered_map, FNV-1a" );
|
test<boost_unordered_map_fnv1a>( "boost::unordered_map, FNV-1a" );
|
||||||
test<boost_unordered_flat_map_fnv1a>( "boost::unordered_flat_map, FNV-1a" );
|
test<boost_unordered_flat_map_fnv1a>( "boost::unordered_flat_map, FNV-1a" );
|
||||||
test<multi_index_map_fnv1a>( "multi_index_map, FNV-1a" );
|
|
||||||
|
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
|
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
#include <boost/unordered_map.hpp>
|
#include <boost/unordered_map.hpp>
|
||||||
#include <boost/unordered/unordered_flat_map.hpp>
|
#include <boost/unordered/unordered_flat_map.hpp>
|
||||||
#include <boost/multi_index_container.hpp>
|
|
||||||
#include <boost/multi_index/hashed_index.hpp>
|
|
||||||
#include <boost/multi_index/member.hpp>
|
|
||||||
#include <boost/core/detail/splitmix64.hpp>
|
#include <boost/core/detail/splitmix64.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
@ -268,24 +265,6 @@ template<template<class...> class Map> BOOST_NOINLINE void test( char const* lab
|
|||||||
times.push_back( rec );
|
times.push_back( rec );
|
||||||
}
|
}
|
||||||
|
|
||||||
// multi_index emulation of unordered_map
|
|
||||||
|
|
||||||
template<class K, class V> struct pair
|
|
||||||
{
|
|
||||||
K first;
|
|
||||||
mutable V second;
|
|
||||||
};
|
|
||||||
|
|
||||||
using namespace boost::multi_index;
|
|
||||||
|
|
||||||
template<class K, class V> using multi_index_map = multi_index_container<
|
|
||||||
pair<K, V>,
|
|
||||||
indexed_by<
|
|
||||||
hashed_unique< member<pair<K, V>, K, &pair<K, V>::first> >
|
|
||||||
>,
|
|
||||||
::allocator< pair<K, V> >
|
|
||||||
>;
|
|
||||||
|
|
||||||
// aliases using the counting allocator
|
// aliases using the counting allocator
|
||||||
|
|
||||||
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
||||||
@ -385,14 +364,6 @@ template<class K, class V> using boost_unordered_map_fnv1a =
|
|||||||
template<class K, class V> using boost_unordered_flat_map_fnv1a =
|
template<class K, class V> using boost_unordered_flat_map_fnv1a =
|
||||||
boost::unordered_flat_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
|
boost::unordered_flat_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
|
||||||
|
|
||||||
template<class K, class V> using multi_index_map_fnv1a = multi_index_container<
|
|
||||||
pair<K, V>,
|
|
||||||
indexed_by<
|
|
||||||
hashed_unique< member<pair<K, V>, K, &pair<K, V>::first>, fnv1a_hash >
|
|
||||||
>,
|
|
||||||
::allocator< pair<K, V> >
|
|
||||||
>;
|
|
||||||
|
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
|
|
||||||
template<class K, class V> using absl_node_hash_map_fnv1a =
|
template<class K, class V> using absl_node_hash_map_fnv1a =
|
||||||
@ -429,12 +400,9 @@ int main()
|
|||||||
{
|
{
|
||||||
init_indices();
|
init_indices();
|
||||||
|
|
||||||
#if 1
|
|
||||||
|
|
||||||
test<std_unordered_map>( "std::unordered_map" );
|
test<std_unordered_map>( "std::unordered_map" );
|
||||||
test<boost_unordered_map>( "boost::unordered_map" );
|
test<boost_unordered_map>( "boost::unordered_map" );
|
||||||
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
||||||
test<multi_index_map>( "multi_index_map" );
|
|
||||||
|
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
|
|
||||||
@ -455,14 +423,11 @@ int main()
|
|||||||
test<tsl_robin_map>( "tsl::robin_map" );
|
test<tsl_robin_map>( "tsl::robin_map" );
|
||||||
test<tsl_robin_pg_map>( "tsl::robin_pg_map" );
|
test<tsl_robin_pg_map>( "tsl::robin_pg_map" );
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
test<std_unordered_map_fnv1a>( "std::unordered_map, FNV-1a" );
|
test<std_unordered_map_fnv1a>( "std::unordered_map, FNV-1a" );
|
||||||
test<boost_unordered_map_fnv1a>( "boost::unordered_map, FNV-1a" );
|
test<boost_unordered_map_fnv1a>( "boost::unordered_map, FNV-1a" );
|
||||||
test<boost_unordered_flat_map_fnv1a>( "boost::unordered_flat_map, FNV-1a" );
|
test<boost_unordered_flat_map_fnv1a>( "boost::unordered_flat_map, FNV-1a" );
|
||||||
test<multi_index_map_fnv1a>( "multi_index_map, FNV-1a" );
|
|
||||||
|
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
|
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
#include <boost/unordered_map.hpp>
|
#include <boost/unordered_map.hpp>
|
||||||
#include <boost/unordered/unordered_flat_map.hpp>
|
#include <boost/unordered/unordered_flat_map.hpp>
|
||||||
#include <boost/multi_index_container.hpp>
|
|
||||||
#include <boost/multi_index/hashed_index.hpp>
|
|
||||||
#include <boost/multi_index/member.hpp>
|
|
||||||
#include <boost/endian/conversion.hpp>
|
#include <boost/endian/conversion.hpp>
|
||||||
#include <boost/core/detail/splitmix64.hpp>
|
#include <boost/core/detail/splitmix64.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
@ -284,24 +281,6 @@ template<template<class...> class Map> BOOST_NOINLINE void test( char const* lab
|
|||||||
times.push_back( rec );
|
times.push_back( rec );
|
||||||
}
|
}
|
||||||
|
|
||||||
// multi_index emulation of unordered_map
|
|
||||||
|
|
||||||
template<class K, class V> struct pair
|
|
||||||
{
|
|
||||||
K first;
|
|
||||||
mutable V second;
|
|
||||||
};
|
|
||||||
|
|
||||||
using namespace boost::multi_index;
|
|
||||||
|
|
||||||
template<class K, class V> using multi_index_map = multi_index_container<
|
|
||||||
pair<K, V>,
|
|
||||||
indexed_by<
|
|
||||||
hashed_unique< member<pair<K, V>, K, &pair<K, V>::first> >
|
|
||||||
>,
|
|
||||||
::allocator< pair<K, V> >
|
|
||||||
>;
|
|
||||||
|
|
||||||
// aliases using the counting allocator
|
// aliases using the counting allocator
|
||||||
|
|
||||||
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
||||||
@ -352,7 +331,6 @@ int main()
|
|||||||
test<std_unordered_map>( "std::unordered_map" );
|
test<std_unordered_map>( "std::unordered_map" );
|
||||||
test<boost_unordered_map>( "boost::unordered_map" );
|
test<boost_unordered_map>( "boost::unordered_map" );
|
||||||
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
||||||
test<multi_index_map>( "multi_index_map" );
|
|
||||||
|
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
|
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
#include <boost/unordered_map.hpp>
|
#include <boost/unordered_map.hpp>
|
||||||
#include <boost/unordered/unordered_flat_map.hpp>
|
#include <boost/unordered/unordered_flat_map.hpp>
|
||||||
#include <boost/multi_index_container.hpp>
|
|
||||||
#include <boost/multi_index/hashed_index.hpp>
|
|
||||||
#include <boost/multi_index/member.hpp>
|
|
||||||
#include <boost/endian/conversion.hpp>
|
#include <boost/endian/conversion.hpp>
|
||||||
#include <boost/core/detail/splitmix64.hpp>
|
#include <boost/core/detail/splitmix64.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
@ -284,24 +281,6 @@ template<template<class...> class Map> BOOST_NOINLINE void test( char const* lab
|
|||||||
times.push_back( rec );
|
times.push_back( rec );
|
||||||
}
|
}
|
||||||
|
|
||||||
// multi_index emulation of unordered_map
|
|
||||||
|
|
||||||
template<class K, class V> struct pair
|
|
||||||
{
|
|
||||||
K first;
|
|
||||||
mutable V second;
|
|
||||||
};
|
|
||||||
|
|
||||||
using namespace boost::multi_index;
|
|
||||||
|
|
||||||
template<class K, class V> using multi_index_map = multi_index_container<
|
|
||||||
pair<K, V>,
|
|
||||||
indexed_by<
|
|
||||||
hashed_unique< member<pair<K, V>, K, &pair<K, V>::first> >
|
|
||||||
>,
|
|
||||||
::allocator< pair<K, V> >
|
|
||||||
>;
|
|
||||||
|
|
||||||
// aliases using the counting allocator
|
// aliases using the counting allocator
|
||||||
|
|
||||||
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
||||||
@ -352,7 +331,6 @@ int main()
|
|||||||
test<std_unordered_map>( "std::unordered_map" );
|
test<std_unordered_map>( "std::unordered_map" );
|
||||||
test<boost_unordered_map>( "boost::unordered_map" );
|
test<boost_unordered_map>( "boost::unordered_map" );
|
||||||
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
||||||
test<multi_index_map>( "multi_index_map" );
|
|
||||||
|
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
|
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
|
|
||||||
#include <boost/unordered_map.hpp>
|
#include <boost/unordered_map.hpp>
|
||||||
#include <boost/unordered/unordered_flat_map.hpp>
|
#include <boost/unordered/unordered_flat_map.hpp>
|
||||||
#include <boost/multi_index_container.hpp>
|
|
||||||
#include <boost/multi_index/hashed_index.hpp>
|
|
||||||
#include <boost/multi_index/member.hpp>
|
|
||||||
#include <boost/endian/conversion.hpp>
|
#include <boost/endian/conversion.hpp>
|
||||||
#include <boost/core/detail/splitmix64.hpp>
|
#include <boost/core/detail/splitmix64.hpp>
|
||||||
#include <boost/container_hash/hash.hpp>
|
#include <boost/container_hash/hash.hpp>
|
||||||
@ -329,24 +326,6 @@ template<template<class...> class Map> BOOST_NOINLINE void test( char const* lab
|
|||||||
times.push_back( rec );
|
times.push_back( rec );
|
||||||
}
|
}
|
||||||
|
|
||||||
// multi_index emulation of unordered_map
|
|
||||||
|
|
||||||
template<class K, class V> struct pair
|
|
||||||
{
|
|
||||||
K first;
|
|
||||||
mutable V second;
|
|
||||||
};
|
|
||||||
|
|
||||||
using namespace boost::multi_index;
|
|
||||||
|
|
||||||
template<class K, class V> using multi_index_map = multi_index_container<
|
|
||||||
pair<K, V>,
|
|
||||||
indexed_by<
|
|
||||||
hashed_unique< member<pair<K, V>, K, &pair<K, V>::first> >
|
|
||||||
>,
|
|
||||||
::allocator< pair<K, V> >
|
|
||||||
>;
|
|
||||||
|
|
||||||
// aliases using the counting allocator
|
// aliases using the counting allocator
|
||||||
|
|
||||||
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
template<class K, class V> using allocator_for = ::allocator< std::pair<K const, V> >;
|
||||||
@ -377,7 +356,6 @@ int main()
|
|||||||
test<std_unordered_map>( "std::unordered_map" );
|
test<std_unordered_map>( "std::unordered_map" );
|
||||||
test<boost_unordered_map>( "boost::unordered_map" );
|
test<boost_unordered_map>( "boost::unordered_map" );
|
||||||
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
|
||||||
test<multi_index_map>( "multi_index_map" );
|
|
||||||
|
|
||||||
#ifdef HAVE_ABSEIL
|
#ifdef HAVE_ABSEIL
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user