mirror of git://gcc.gnu.org/git/gcc.git
re PR libstdc++/54075 ([4.7.1] unordered_map insert still slower than 4.6.2)
2012-11-08 François Dumont <fdumont@gcc.gnu.org> PR libstdc++/54075 * include/bits/hashtable.h (_Hashtable<>::rehash): Reset hash policy state if no rehash. * testsuite/23_containers/unordered_set/modifiers/reserve.cc (test02): New. From-SVN: r193339
This commit is contained in:
parent
68a5598093
commit
ecf07a67d0
|
|
@ -1,3 +1,11 @@
|
||||||
|
2012-11-08 François Dumont <fdumont@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR libstdc++/54075
|
||||||
|
* include/bits/hashtable.h (_Hashtable<>::rehash): Reset hash
|
||||||
|
policy state if no rehash.
|
||||||
|
* testsuite/23_containers/unordered_set/modifiers/reserve.cc
|
||||||
|
(test02): New.
|
||||||
|
|
||||||
2012-11-08 Paolo Carlini <paolo.carlini@oracle.com>
|
2012-11-08 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
* testsuite/23_containers/unordered_multimap/insert/55028-debug.cc:
|
* testsuite/23_containers/unordered_multimap/insert/55028-debug.cc:
|
||||||
|
|
|
||||||
|
|
@ -1654,6 +1654,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
// level.
|
// level.
|
||||||
_M_rehash_policy._M_prev_resize = 0;
|
_M_rehash_policy._M_prev_resize = 0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
// No rehash, restore previous state to keep a consistent state.
|
||||||
|
_M_rehash_policy._M_reset(__saved_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _Key, typename _Value,
|
template<typename _Key, typename _Value,
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,28 @@ void test01()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test02()
|
||||||
|
{
|
||||||
|
const int N = 1000;
|
||||||
|
|
||||||
|
typedef std::unordered_set<int> Set;
|
||||||
|
Set s;
|
||||||
|
s.reserve(N);
|
||||||
|
s.reserve(N);
|
||||||
|
|
||||||
|
std::size_t bkts = s.bucket_count();
|
||||||
|
for (int i = 0; i != N; ++i)
|
||||||
|
{
|
||||||
|
s.insert(i);
|
||||||
|
// As long as we insert less than the reserved number of elements we
|
||||||
|
// shouldn't experiment any rehash.
|
||||||
|
VERIFY( s.bucket_count() == bkts );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
test01();
|
test01();
|
||||||
|
test02();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue