Howard Hinnant
aeb85680fb
Dimitry Andric: many visibility fixes. Howard: Much appreciated. Can you send me a patch to CREDITS.TXT?
...
llvm-svn: 163862
2012-09-14 00:39:16 +00:00
Howard Hinnant
4cb38a82a2
This commit establishes a new bucket_count policy in the unordered containers: The policy now allows a power-of-2 number of buckets to be requested (and that request honored) by the client. And if the number of buckets is set to a power of 2, then the constraint of the hash to the number of buckets uses & instead of %. If the client does not specify a number of buckets, then the policy remains unchanged: a prime number of buckets is selected. The growth policy is that the number of buckets is roughly doubled when needed. While growing, either the prime, or the power-of-2 strategy will be preserved. There is a small run time cost for putting in this switch. For very cheap hash functions, e.g. identity for int, the cost can be as high as 18%. However with more typical use cases, e.g. strings, the cost is in the noise level. I've measured cases with very cheap hash functions (int) that using a power-of-2 number of buckets can make look up about twice as fast. However I've also noted that a power-of-2 number of buckets is more susceptible to accidental catastrophic collisions. Though I've also noted that accidental catastrophic collisions are also possible when using a prime number of buckets (but seems far less likely). In short, this patch adds an extra tuning knob for those clients trying to get the last bit of performance squeezed out of their hash containers. Casual users of the hash containers will not notice the introduction of this tuning knob. Those clients who swear by power-of-2 hash containers can now opt-in to that strategy. Clients who prefer a prime number of buckets can continue as they have.
...
llvm-svn: 159836
2012-07-06 17:31:14 +00:00
Howard Hinnant
a1a9e77122
As an extension, support incomplete types in the unordered containers to match what we already do in the associative containers.
...
llvm-svn: 146376
2011-12-12 17:26:24 +00:00
Howard Hinnant
c206366fd7
Quash a whole bunch of warnings
...
llvm-svn: 145624
2011-12-01 20:21:04 +00:00
Howard Hinnant
c003db1fca
Further macro protection by replacing _[A-Z] with _[A-Z]p
...
llvm-svn: 145410
2011-11-29 18:15:50 +00:00
Howard Hinnant
ab4f438239
Add protection from min/max macros
...
llvm-svn: 145407
2011-11-29 16:45:27 +00:00
Howard Hinnant
073458b1ab
Windows support by Ruben Van Boxem.
...
llvm-svn: 142235
2011-10-17 20:05:10 +00:00
Howard Hinnant
f622b58c83
Fixed PR10507 ( http://llvm.org/bugs/show_bug.cgi?id=10507 )
...
llvm-svn: 136595
2011-07-31 17:04:30 +00:00
Chandler Carruth
aa41ea2cc1
Revert r136546, which was submitted without review.
...
Original change:
Destruct elements of hash tables when removing individual entries from
the hash_table. I think this is the correct solution to PR10507, but I'm
not sure since this is a little bit cargo-culted. Howard, please review.
llvm-svn: 136576
2011-07-30 21:10:16 +00:00
Alexis Hunt
9663c8cb15
Destruct elements of hash tables when removing individual entries from
...
the hash_table. I think this is the correct solution to PR10507, but I'm
not sure since this is a little bit cargo-culted. Howard, please review.
llvm-svn: 136546
2011-07-30 00:18:12 +00:00
Howard Hinnant
1f8da84b76
Fix uninitialized loop counter. http://llvm.org/bugs/show_bug.cgi?id=10278
...
llvm-svn: 134405
2011-07-05 14:14:17 +00:00
Howard Hinnant
ce48a1137d
_STD -> _VSTD to avoid macro clash on windows
...
llvm-svn: 134190
2011-06-30 21:18:19 +00:00
Howard Hinnant
ce53420e37
Provide names for template and function parameters in forward declarations. The purpose is to aid automated documentation tools.
...
llvm-svn: 133008
2011-06-14 19:58:17 +00:00
Howard Hinnant
3714107ed6
noexcept for <unordered_map>.
...
llvm-svn: 132646
2011-06-04 18:54:24 +00:00
Howard Hinnant
73736effce
Fixed two problems found by Chris Jefferson: Made operator>> for char consistent with gcc. Opened an LWG issue on this one. 2) Renamed some private typedefs which are causing boost grief.
...
llvm-svn: 126576
2011-02-27 18:02:02 +00:00
Howard Hinnant
72c5e14203
Qualify calls to addressof with std::. Bug 9106
...
llvm-svn: 124726
2011-02-02 17:36:20 +00:00
Howard Hinnant
412dbebe1b
license change
...
llvm-svn: 119395
2010-11-16 22:09:02 +00:00
Howard Hinnant
43d9923860
visibility-decoration.
...
llvm-svn: 114451
2010-09-21 17:32:39 +00:00
Howard Hinnant
959cf8aede
Fix whitespace
...
llvm-svn: 113089
2010-09-04 23:46:48 +00:00
Howard Hinnant
7609c9b665
Changed __config to react to all of clang's currently documented has_feature flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature.
...
llvm-svn: 113086
2010-09-04 23:28:19 +00:00
Howard Hinnant
b3371f6f49
Fixing whitespace problems
...
llvm-svn: 111750
2010-08-22 00:02:43 +00:00
Howard Hinnant
5b08a8a432
Wiped out some non-ascii characters that snuck into the copyright.
...
llvm-svn: 103516
2010-05-11 21:36:01 +00:00
Howard Hinnant
3e519524c1
libcxx initial import
...
llvm-svn: 103490
2010-05-11 19:42:16 +00:00