summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-05-06 10:19:51 +0200
committerantirez <antirez@gmail.com>2014-05-07 16:17:11 +0200
commit08ea98c9e9f32288d21a0caf8362342f500dcc21 (patch)
tree16b8bf163608cb2dc56404f9b3b60a16b7654e6c
parent3a1a0c32408ddbe2ea06e37b354620b8fb1e2cda (diff)
downloadredis-08ea98c9e9f32288d21a0caf8362342f500dcc21.tar.gz
Scripting: replace tolower() with faster code in evalGenericCommand().
The function showed up consuming a non trivial amount of time in the profiler output. After this change benchmarking gives a 6% speed improvement that can be consistently measured.
-rw-r--r--src/scripting.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/scripting.c b/src/scripting.c
index e28662db1..8eddb2a5e 100644
--- a/src/scripting.c
+++ b/src/scripting.c
@@ -861,8 +861,12 @@ void evalGenericCommand(redisClient *c, int evalsha) {
int j;
char *sha = c->argv[1]->ptr;
+ /* Convert to lowercase. We don't use tolower since the function
+ * managed to always show up in the profiler output consuming
+ * a non trivial amount of time. */
for (j = 0; j < 40; j++)
- funcname[j+2] = tolower(sha[j]);
+ funcname[j+2] = (sha[j] >= 'A' && sha[j] <= 'Z') ?
+ sha[j]+('a'-'A') : sha[j];
funcname[42] = '\0';
}