From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 9EE123943402 for ; Tue, 17 Aug 2021 16:24:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9EE123943402 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-163-48Ng6etPN-WKrAckQp7M8w-1; Tue, 17 Aug 2021 12:24:07 -0400 X-MC-Unique: 48Ng6etPN-WKrAckQp7M8w-1 Received: by mail-wr1-f72.google.com with SMTP id m2-20020a0560000082b0290154f6e2e51fso6781579wrx.12 for ; Tue, 17 Aug 2021 09:24:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Szqim47NtRhEBPpWt0R/YR/dP8I0qG32ghQGvfnxngo=; b=sbWzYAiEKPXyvKdncbitgQFsarX2LowXYC09XSHO74jlr6DJHi54pJobTFSgeGIPCR Z4XcRapq0muuLPQjDwZOwft2V76SwCIelLhb2Q42yxal+cD6wkEGH2k728bgjzPPe7Ot WsQzXCkikc2ssBalYCk2S+GD0NJgxGkSK64oVqwb58b9p398QKfce3L7PeNgdTJfadq2 i06hkbt7zvrCOwokJ5jLTaWdONJ2Nva83nI8VCz0taW2x39GThfv9eT1o1wxQOKCEShe +MhsWG80EVFZNmVfWQlQtbyAKDrZHkp6Xgizw2Gj91CY7LuzDUe41fblG2FcVXb1kUA0 oHtA== X-Gm-Message-State: AOAM533rB0ByEDxNCIjnvbpvv5IQ38kEf9s+zG5BZcZmg2m9d3Ss1zeC 2R4xCTGf4aCQZIC1EL6DJ5oUgpSK7tY5redK39Jc6AivbR0cwTucKOMgIUZeL5J4uUSi/+hqlnW ypU7+OXLQx6pTlzHFdvAVCZjSNaUsViU= X-Received: by 2002:a05:6000:1186:: with SMTP id g6mr5248785wrx.147.1629217446462; Tue, 17 Aug 2021 09:24:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJycj6U6zA3Oq1mMBpk320wV50CSSGvgsdzSdO7RNHkgHhp+YIz94s0DwFocCBms+GD94sgsLv9ywbX1lUnG0s0= X-Received: by 2002:a05:6000:1186:: with SMTP id g6mr5248750wrx.147.1629217446165; Tue, 17 Aug 2021 09:24:06 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jonathan Wakely Date: Tue, 17 Aug 2021 17:23:54 +0100 Message-ID: Subject: Re: [PATCH] Optimize seed_seq construction To: Antony Polukhin Cc: "libstdc++" , gcc-patches List X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="0000000000002429da05c9c3bfc0" X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Aug 2021 16:24:20 -0000 --0000000000002429da05c9c3bfc0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 17 Aug 2021 at 14:40, Antony Polukhin wrote: > > =D0=B2=D1=82, 17 =D0=B0=D0=B2=D0=B3. 2021 =D0=B3. =D0=B2 16:37, Jonathan = Wakely : > <...> > > Thanks, this is a nice improvement. We can avoid tag dispatching to > > make it simpler though: > > > > @@ -3248,6 +3249,9 @@ namespace __detail > > template > > seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end) > > { > > + if _GLIBCXX17_CONSTEXPR > > (__is_random_access_iter<_InputIterator>::value) > > + _M_v.reserve(std::distance(__begin, __end)); > > + > > for (_InputIterator __iter =3D __begin; __iter !=3D __end; ++__it= er) > > _M_v.push_back(__detail::__mod > __detail::_Shift::__value>(*__it= er)); > > > > The call to std::distance is well-formed for input iterators, but we > > won't actually call it unless we have random access iterators. > > > > Unless you see a problem with this that I'm missing, I'll go with that = version. > > Looks much better. Thanks! Here's what I've tested and pushed to trunk. Thanks again! --0000000000002429da05c9c3bfc0 Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ksg9zni70 Y29tbWl0IDE3NGY5MjU3YTc1ZGVjOTMyMjFlY2EyNmMyMzZlMGE2MzQ2YzlkZmQKQXV0aG9yOiBB bnRvbnkgUG9sdWtoaW4gPGFudG9zaGtrYUBnbWFpbC5jb20+CkRhdGU6ICAgVHVlIEF1ZyAxNyAx Mzo1MDo1MyAyMDIxCgogICAgbGlic3RkYysrOiBPcHRpbWl6ZSBzdGQ6OnNlZWRfc2VxIGNvbnN0 cnVjdGlvbgogICAgCiAgICBXaGVuIHN0ZDo6c2VlZF9zZXEgaXMgY29uc3RydWN0ZWQgZnJvbSBy YW5kb20gYWNjZXNzIGl0ZXJhdG9ycyB3ZSBjYW4KICAgIGRldGVjdCB0aGUgaW50ZXJuYWwgdmVj dG9yIHNpemUgaW4gTygxKS4gUmVzZXJ2aW5nIG1lbW9yeSBmb3IgZWxlbWVudHMKICAgIGluIHN1 Y2ggY2FzZXMgbWF5IGF2b2lkIG11bHRpcGxlIG1lbW9yeSBhbGxvY2F0aW9ucy4KICAgIAogICAg U2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gV2FrZWx5IDxqd2FrZWx5QHJlZGhhdC5jb20+CiAgICAK ICAgIGxpYnN0ZGMrKy12My9DaGFuZ2VMb2c6CiAgICAKICAgICAgICAgICAgKiBpbmNsdWRlL2Jp dHMvcmFuZG9tLnRjYyAoc2VlZF9zZXE6OnNlZWRfc2VxKTogUmVzZXJ2ZSBjYXBhY2l0eQogICAg ICAgICAgICBpZiBkaXN0YW5jZSBpcyBPKDEpLgogICAgICAgICAgICAqIHRlc3RzdWl0ZS8yNl9u dW1lcmljcy9yYW5kb20vcHI2MDAzNy1uZWcuY2M6IEFkanVzdCBkZy1lcnJvcgogICAgICAgICAg ICBsaW5lIG51bWJlci4KICAgIAogICAgQ28tYXV0aG9yZWQtYnk6IEpvbmF0aGFuIFdha2VseSA8 andha2VseUByZWRoYXQuY29tPgoKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Jp dHMvcmFuZG9tLnRjYyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvcmFuZG9tLnRjYwppbmRl eCAwYmU1MGQ5MGU4YS4uMDIzZmRlZDdmNWQgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNs dWRlL2JpdHMvcmFuZG9tLnRjYworKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3JhbmRv bS50Y2MKQEAgLTMyNDAsNiArMzI0MCw3IEBAIG5hbWVzcGFjZSBfX2RldGFpbAogICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfSW50VHlwZSwgdHlwZW5hbWU+CiAgICAgc2VlZF9zZXE6OnNlZWRfc2VxKHN0 ZDo6aW5pdGlhbGl6ZXJfbGlzdDxfSW50VHlwZT4gX19pbCkKICAgICB7CisgICAgICBfTV92LnJl c2VydmUoX19pbC5zaXplKCkpOwogICAgICAgZm9yIChhdXRvIF9faXRlciA9IF9faWwuYmVnaW4o KTsgX19pdGVyICE9IF9faWwuZW5kKCk7ICsrX19pdGVyKQogCV9NX3YucHVzaF9iYWNrKF9fZGV0 YWlsOjpfX21vZDxyZXN1bHRfdHlwZSwKIAkJICAgICAgIF9fZGV0YWlsOjpfU2hpZnQ8cmVzdWx0 X3R5cGUsIDMyPjo6X192YWx1ZT4oKl9faXRlcikpOwpAQCAtMzI0OCw2ICszMjQ5LDkgQEAgbmFt ZXNwYWNlIF9fZGV0YWlsCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAg IHNlZWRfc2VxOjpzZWVkX3NlcShfSW5wdXRJdGVyYXRvciBfX2JlZ2luLCBfSW5wdXRJdGVyYXRv ciBfX2VuZCkKICAgICB7CisgICAgICBpZiBfR0xJQkNYWDE3X0NPTlNURVhQUiAoX19pc19yYW5k b21fYWNjZXNzX2l0ZXI8X0lucHV0SXRlcmF0b3I+Ojp2YWx1ZSkKKwlfTV92LnJlc2VydmUoc3Rk OjpkaXN0YW5jZShfX2JlZ2luLCBfX2VuZCkpOworCiAgICAgICBmb3IgKF9JbnB1dEl0ZXJhdG9y IF9faXRlciA9IF9fYmVnaW47IF9faXRlciAhPSBfX2VuZDsgKytfX2l0ZXIpCiAJX01fdi5wdXNo X2JhY2soX19kZXRhaWw6Ol9fbW9kPHJlc3VsdF90eXBlLAogCQkgICAgICAgX19kZXRhaWw6Ol9T aGlmdDxyZXN1bHRfdHlwZSwgMzI+OjpfX3ZhbHVlPigqX19pdGVyKSk7CmRpZmYgLS1naXQgYS9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzI2X251bWVyaWNzL3JhbmRvbS9wcjYwMDM3LW5lZy5jYyBi L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjZfbnVtZXJpY3MvcmFuZG9tL3ByNjAwMzctbmVnLmNj CmluZGV4IDhmYmE3MTQ0ZDhhLi4zYWI5YzQ0MjMyZSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYz L3Rlc3RzdWl0ZS8yNl9udW1lcmljcy9yYW5kb20vcHI2MDAzNy1uZWcuY2MKKysrIGIvbGlic3Rk YysrLXYzL3Rlc3RzdWl0ZS8yNl9udW1lcmljcy9yYW5kb20vcHI2MDAzNy1uZWcuY2MKQEAgLTEy LDQgKzEyLDQgQEAgYXV0byB4ID0gc3RkOjpnZW5lcmF0ZV9jYW5vbmljYWw8c3RkOjpzaXplX3Qs CiAKIC8vIHsgZGctZXJyb3IgInN0YXRpYyBhc3NlcnRpb24gZmFpbGVkOiB0ZW1wbGF0ZSBhcmd1 bWVudCBtdXN0IGJlIGEgZmxvYXRpbmcgcG9pbnQgdHlwZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAx NjkgfQogCi0vLyB7IGRnLWVycm9yICJzdGF0aWMgYXNzZXJ0aW9uIGZhaWxlZDogdGVtcGxhdGUg YXJndW1lbnQgbXVzdCBiZSBhIGZsb2F0aW5nIHBvaW50IHR5cGUiICIiIHsgdGFyZ2V0ICotKi0q IH0gMzM1MiB9CisvLyB7IGRnLWVycm9yICJzdGF0aWMgYXNzZXJ0aW9uIGZhaWxlZDogdGVtcGxh dGUgYXJndW1lbnQgbXVzdCBiZSBhIGZsb2F0aW5nIHBvaW50IHR5cGUiICIiIHsgdGFyZ2V0ICot Ki0qIH0gMzM1NiB9Cg== --0000000000002429da05c9c3bfc0--