From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: from second.openwall.net (second.openwall.net [193.110.157.125]) by inbox.vuxu.org (Postfix) with SMTP id 3D7E02223E for ; Tue, 16 Apr 2024 16:29:27 +0200 (CEST) Received: (qmail 1629 invoked by uid 550); 16 Apr 2024 14:29:22 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 1591 invoked from network); 16 Apr 2024 14:29:22 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1713277753; x=1713882553; i=nullplan@gmx.net; bh=mTIyjt9sYYoRtTE9qiXoGkxVOVn5m6SDq/xRTJaKnjg=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:Message-ID:References: MIME-Version:Content-Type:In-Reply-To:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=du4o+ECgthLMJXQDfpRnmwPvOrL0bvF58atHCcolcEYFJoyedF678G7+AeuLpXnw iTAVg8IThMn3ZiXBSDSB2JwtjNwq2IpVWUMWgh0/2SYeGavmez6Rsjdi9uc+MG6WZ IffeS2olIQJYHI4uHzyJtydK2IWRxrpldMjwoNMd+m/4KhHWmoCiuFdFoU90fIrfk 5DZwWRxGPVnEFosGzf+U/Q0W/RWekulEMoQxrE7ypiCEn+OvVsndSBIcuY2dHIKR0 FSEB3uYQLIaYr+wOeT4kBFjYkSj2W7f5xuO/BoppNWxjNdHlBnX9uW8vOv+FLvADN 0uQ4eS9LZ9Hay8FtUQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Date: Tue, 16 Apr 2024 16:29:12 +0200 From: Markus Wichmann To: musl@lists.openwall.com Cc: Viktor Reznov Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Provags-ID: V03:K1:SUzTvHClRf1Yhfh1uYQiMX3Dq2aEhL110v+V93YMIvwVR6t0zUV VrHLi+Q0TXmm/jNX/Q/U8wgydZMnXCOG7/J6yIXZa0b4msPKvBqYMw02OLuE6lk5UHn/qG3 eG/H6/uInr1gMV1x0wTzO8ZCkDl0bydKXydVbA/jsK0jUpPF6fHrgIbD3wSeuq60pDWmIyq INCFCF3UVPu+QwqSzy0Vw== UI-OutboundReport: notjunk:1;M01:P0:HdiC1k1aG3A=;QpsC5CLO3/9JvcT8ZgvfviKQOLd cGZXmL+ISxDVnrdzVd5nI72pSvT31dWralyZwx6upQMjDVsIxg/O42fw4YgmQQySkYEty0kkF lm42rv6SGwpq7IVRwzQF4wiUh9hPc6wKvAtlLklQBD4JM9e7j+8/9EH3HxcJdt+dl/Zav2DYT 3Ayz0HT+JOLRvIfxbfQ2tREeiFN80F2kVmaTgQ8CpY6FWxu91KUzNq+qvJvF2yra9DQw3yOFt edCFhde3NW4nHgFe1zjpQ/MRy072nZH+LYqM8ZYaNcc9y+7x48pCwR4XppVJMi/WR5G8PGR2B YkW0EZIqPREnDp+klnFn1IkqxacLwEmzlATDZVGjhafbpogeKzcs+xXCa2vAajMKQZn64OUKj KvAELZsZCox5uUH3ZxkWt2mUrUyck8d8NP53E3DLK7JD+9PSx35BsOThSlsRS/gIh7WaNlTtJ QLNGUfVid9OTmkqm6E6rsHryZ3Svdlof4WmzZdt8DufifKMpYPzkYyK6+KE1E4ONcCVJ1HgKO RgSOCFl12g1XxrCUTmF0GLGrOLA1+NsxCHCzQtc9ixVkrjbbcGhuBESTiZ+kYStR6pOEnlWE0 SpWZ2O8QbeqTfbEKslGrmsu8iX8zQrjGlR1POvRQahHGsyLNcmwFKG9wZl/zxz+Q7EWjOWlSe 5D5OkUC9gmRp0ihuS2ndVn9H8n5KczK8dikPIk670yx5uoGv7tw1HvlTWNezzt1EDDyq6lHTI 57WgBgvWgn2DYLeixMD7m6u0YEmaZqd2D5PCBnB1xAtM6eiHEW5XZcDdjH4O/rsuy7GtGGGPf y8gbpGVcroqj2KE1vOmblvrzP9WIWXDOL0/sE4kFPZIGg= Subject: Re: [musl] [PATCH] Decreasing the number of divisions Am Tue, Apr 16, 2024 at 04:29:05PM +0300 schrieb Viktor Reznov: > diff --git a/src/stdio/vfprintf.c b/src/stdio/vfprintf.c > index 497c5e19..0f9a1e6a 100644 > --- a/src/stdio/vfprintf.c > +++ b/src/stdio/vfprintf.c > @@ -165,8 +165,10 @@ static char *fmt_o(uintmax_t x, char *s) > static char *fmt_u(uintmax_t x, char *s) > { > unsigned long y; > + if (x == 0) return s; > for ( ; x>ULONG_MAX; x/=10) *--s = '0' + x%10; > - for (y=x; y; y/=10) *--s = '0' + y%10; > + for (y=x; y>=10; y/=10) *--s = '0' + y%10; > + *--s = '0' + y; > return s; > } I played around with this change on godbolt: https://godbolt.org/z/9PoGK9zae Seems to me like the version with OPTIMIZE=1 is longer and more complicated. OK, let's take a step back: What is the point of this patch? It makes the code longer and less readable. It does not fix a logic bug. The only reason I can see is that it makes the code "faster". In that case, I would like to see a benchmark. On x86-64, the loop condition on the first loop is always false, so the unchanged function becomes a single loop. The changed function becomes a selection statement, a loop, and an assignment. Don't see how that could possibly be faster. But am willing to be convinced otherwise. Ciao, Markus