[llvm] r264383 - StringMap: reserve appropriate size when initializing from an initializer list
Mehdi Amini via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 25 08:55:17 PDT 2016
Hi Don,
You may want to look at the series of changes I committed to StringMap and DenseMap.
The StringMapImpl constructor looks like this now:
StringMapImpl::StringMapImpl(unsigned InitSize, unsigned itemSize) {
ItemSize = itemSize;
// If a size is specified, initialize the table with that many buckets.
if (InitSize) {
// The table will grow when the number of entries reach 3/4 of the number of
// buckets. To guarantee that "InitSize" number of entries can be inserted
// in the table without growing, we allocate just what is needed here.
init(getMinBucketToReserveForEntries(InitSize));
return;
}
I hope this address your concern.
--
Mehdi
> On Mar 25, 2016, at 7:39 AM, don hinton <hintonda at gmail.com> wrote:
>
> Won't this still force a rehash since the table will be more that 3/4 full? Assuming the initialization list contains unique keys.
>
> On Mar 25, 2016 10:11 AM, "David Blaikie via llvm-commits" <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
> Worth a test?
>
> On Mar 24, 2016 11:02 PM, "Mehdi Amini via llvm-commits" <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
> Author: mehdi_amini
> Date: Fri Mar 25 00:57:47 2016
> New Revision: 264383
>
> URL: http://llvm.org/viewvc/llvm-project?rev=264383&view=rev <http://llvm.org/viewvc/llvm-project?rev=264383&view=rev>
> Log:
> StringMap: reserve appropriate size when initializing from an initializer list
>
> From: Mehdi Amini <mehdi.amini at apple.com <mailto:mehdi.amini at apple.com>>
>
> Modified:
> llvm/trunk/include/llvm/ADT/StringMap.h
>
> Modified: llvm/trunk/include/llvm/ADT/StringMap.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringMap.h?rev=264383&r1=264382&r2=264383&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringMap.h?rev=264383&r1=264382&r2=264383&view=diff>
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/StringMap.h (original)
> +++ llvm/trunk/include/llvm/ADT/StringMap.h Fri Mar 25 00:57:47 2016
> @@ -233,7 +233,7 @@ public:
> Allocator(A) {}
>
> StringMap(std::initializer_list<std::pair<StringRef, ValueTy>> List)
> - : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {
> + : StringMapImpl(List.size(), static_cast<unsigned>(sizeof(MapEntryTy))) {
> for (const auto &P : List) {
> insert(P);
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160325/efb6ceb3/attachment.html>
More information about the llvm-commits
mailing list