From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: zsh-workers-return-43702-ml=inbox.vuxu.org@zsh.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 91dd4b24 for ; Wed, 17 Oct 2018 14:25:32 +0000 (UTC) Received: (qmail 25026 invoked by alias); 17 Oct 2018 14:25:18 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 43702 Received: (qmail 26106 invoked by uid 1010); 17 Oct 2018 14:25:17 -0000 X-Qmail-Scanner-Diagnostics: from out3-smtp.messagingengine.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(66.111.4.27):SA:0(-2.6/5.0):. Processed in 6.278907 secs); 17 Oct 2018 14:25:17 -0000 X-Envelope-From: d.s@daniel.shahaf.name X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= daniel.shahaf.name; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to; s=fm1; bh=Baz mqvCuaqm1hD2ETWvkioRTaj8ZXG8ebZDH/xPiiqs=; b=YPe1pY2CnXv5/dv3LxH 49fdaO2HSezgUHjHK/95xpx4+yrp/qc3bgvg60YeSr5YaU8BYp8bmtVUWWLR2z+k BM+YzU4q6+5qJ0a6pcaqCNRykXsi6qCqqzb37DhOg9niOet4LuD4UBx5MTQ7JYok DLUQ1UvRU2ny+LJO3JOaxFfuu7J8w3BnrwBwpRsNu1YiF9gc+nUCSU1IlUIonSqb BHHyXXZXuDhWaYfMVcBN5yq+lytlsimqEc/NJ2wyX93hSK83Ev2p/7aGgDEpbgwS 5dA9uIpWrrdvaSIbOKCIKRDsXfEo54iAVcsB9mECK1VqPoYPoGeGr75eSporhg4j i8g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=Bazmqv Cuaqm1hD2ETWvkioRTaj8ZXG8ebZDH/xPiiqs=; b=quUULIOm1SWgWqb+q1xjKQ HS6qA26xHUPaCet9PkxM6DPfmKCQKYnaVNxrQL4N+vXdf0UTEBksXKs/5vZj2dOs XXCcp65ag/lFCWh6+kaGPl6yry3zUkvoHLJ/AccNdQi8n9ferJwyRI0HLddxpjCQ PTR8s1YaW5tcOowf+ycPCMkeZCjmZdit0aZnXcQaP+fSYzvTlbpVfdXhcOKyPxXk BojgIdGu5iRx7nLJtpgeL/9QoufyrKjwFDC8+Dm7xGKTmsNzMyYzv5l488J6nV2N u9VQRpMnT6URYnnq/bEgPfIKRCYI+r2aS5EfN4PPIUg+JbkYz2HtqZk0QSci/ZRA == X-ME-Sender: X-ME-Proxy: Date: Wed, 17 Oct 2018 14:25:03 +0000 From: Daniel Shahaf To: Sebastian Gniazdowski Cc: Zsh hackers list Subject: Re: [PATCH] ztrsub() execution time / 2 Message-ID: <20181017142503.ueqgcyljm3aalitf@tarpaulin.shahaf.local2> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) Sebastian Gniazdowski wrote on Wed, Oct 17, 2018 at 06:29:08 +0200: > diff --git a/Src/utils.c b/Src/utils.c > index 914e30c..1eb8c71 100644 > --- a/Src/utils.c > +++ b/Src/utils.c > @@ -5058,23 +5058,23 @@ ztrlenend(char const *s, char const *eptr) > #endif /* MULTIBYTE_SUPPORT */ > > /* Subtract two pointers in a metafied string. */ > > /**/ > mod_export int > ztrsub(char const *t, char const *s) > { > int l = t - s; > > while (s != t) { > - if (*s++ == Meta) { > + if (*s++ == Meta || (s != t && *s++ == Meta)) { Thank you for generating the diff with additional context lines. As far as I can tell, this patch is the sort of transformation that an optimizing compiler should do by itself. In fact, I'm having a hard time seeing how the sequence of "BRANCH IF EQUAL" / "BRANCH IF NOT EQUAL" / "INCREMENT" assembly instructions would be altered by the patch. If your profiling was performed on zsh compiled with -O3, I would suggest that you file a bug against your compiler's optimizer. > #ifdef DEBUG > if (! *s || s == t) > fprintf(stderr, "BUG: substring ends in the middle of a metachar in ztrsub()\n"); > else > #endif > s++; > l--; Cheers, Daniel > } > } > return l; > }