mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "George Spelvin" <linux@horizon.com>
To: joe@perches.com, linux@rasmusvillemoes.dk
Cc: linux-kernel@vger.kernel.org, linux@horizon.com
Subject: [PATCH 1/2] lib/vsprintf.c: Simplify uuid_string()
Date: 11 May 2015 15:53:10 -0400	[thread overview]
Message-ID: <20150511195310.3608.qmail@ns.horizon.com> (raw)
In-Reply-To: <20150511163230.14333.qmail@ns.horizon.com>

>From a53aa64b7b508d1f7cddbad556fb94f2c9c0191f Mon Sep 17 00:00:00 2001
From: George Spelvin <linux@horizon.com>
Date: Mon, 11 May 2015 13:05:55 -0400
Subject: [PATCH 1/2] lib/vsprintf.c: Simplify uuid_string()

Rather than have a second pass to upcase the buffer, just make the
hex lookup table variable.

I suspect it's a speedup, but since this is not hot code, the important
part is that it shrinks the function from 332 to 256 bytes.

Signed-off-by: George Spelvin <linux@horizon.com>
---
With apologies for the un-compilable intermediate state of the draft.

 lib/vsprintf.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index 452e4a16..4c4f9055 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -1270,21 +1270,23 @@ char *uuid_string(char *buf, char *end, const u8 *addr,
 	static const u8 be[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
 	static const u8 le[16] = {3,2,1,0,5,4,7,6,8,9,10,11,12,13,14,15};
 	const u8 *index = be;
-	bool uc = false;
+	const char *hex = hex_asc;
 
 	switch (*(++fmt)) {
 	case 'L':
-		uc = true;		/* fall-through */
+		hex = hex_asc_upper;	/* fall-through */
 	case 'l':
 		index = le;
 		break;
 	case 'B':
-		uc = true;
+		hex = hex_asc_upper;
 		break;
 	}
 
 	for (i = 0; i < 16; i++) {
-		p = hex_byte_pack(p, addr[index[i]]);
+		u8 byte = addr[index[i]];
+		*p++ = hex[byte >> 4];
+		*p++ = hex[byte & 0x0f];
 		switch (i) {
 		case 3:
 		case 5:
@@ -1297,13 +1299,6 @@ char *uuid_string(char *buf, char *end, const u8 *addr,
 
 	*p = 0;
 
-	if (uc) {
-		p = uuid;
-		do {
-			*p = toupper(*p);
-		} while (*(++p));
-	}
-
 	return string(buf, end, uuid, spec);
 }
 
-- 
2.1.4


  parent reply	other threads:[~2015-05-11 19:53 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-11 16:32 [RFC PATCH] " George Spelvin
2015-05-11 16:49 ` Joe Perches
2015-05-11 16:55   ` George Spelvin
2015-05-11 19:53 ` George Spelvin [this message]
2015-05-11 19:55 ` [PATCH 2/2] lib/vsprintf.c: Further simplify uuid_string() George Spelvin
2015-05-12  2:14   ` Joe Perches
2015-05-12  9:10     ` [PATCH 2/2 v2] " George Spelvin
2015-05-12 11:26       ` Rasmus Villemoes
2015-05-12 13:57         ` George Spelvin
2015-05-12 16:59           ` Joe Perches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150511195310.3608.qmail@ns.horizon.com \
    --to=linux@horizon.com \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®