Unverified Commit 68e87eb0 authored by filipe oliveira's avatar filipe oliveira Committed by GitHub
Browse files

changing addReplySds and sdscat to addReplyStatusLength() within luaReplyToRedisReply() (#11556)

profiling EVALSHA\ we see that luaReplyToRedisReply takes 8.73% out of the
56.90% of luaCallFunction CPU cycles. 

Using addReplyStatusLength instead of directly composing the protocol to avoid
sdscatprintf and addReplySds ( which imply multiple sdslen calls ).

The new approach drops
luaReplyToRedisReply CPU cycles to 3.77%                                                                                                                                           
parent b0250b45
...@@ -653,7 +653,7 @@ static void luaReplyToRedisReply(client *c, client* script_client, lua_State *lu ...@@ -653,7 +653,7 @@ static void luaReplyToRedisReply(client *c, client* script_client, lua_State *lu
if (t == LUA_TSTRING) { if (t == LUA_TSTRING) {
sds ok = sdsnew(lua_tostring(lua,-1)); sds ok = sdsnew(lua_tostring(lua,-1));
sdsmapchars(ok,"\r\n"," ",2); sdsmapchars(ok,"\r\n"," ",2);
addReplySds(c,sdscatprintf(sdsempty(),"+%s\r\n",ok)); addReplyStatusLength(c, ok, sdslen(ok));
sdsfree(ok); sdsfree(ok);
lua_pop(lua,2); lua_pop(lua,2);
return; return;
......
...@@ -2507,6 +2507,7 @@ void addReplyBulkCString(client *c, const char *s); ...@@ -2507,6 +2507,7 @@ void addReplyBulkCString(client *c, const char *s);
void addReplyBulkCBuffer(client *c, const void *p, size_t len); void addReplyBulkCBuffer(client *c, const void *p, size_t len);
void addReplyBulkLongLong(client *c, long long ll); void addReplyBulkLongLong(client *c, long long ll);
void addReply(client *c, robj *obj); void addReply(client *c, robj *obj);
void addReplyStatusLength(client *c, const char *s, size_t len);
void addReplySds(client *c, sds s); void addReplySds(client *c, sds s);
void addReplyBulkSds(client *c, sds s); void addReplyBulkSds(client *c, sds s);
void setDeferredReplyBulkSds(client *c, void *node, sds s); void setDeferredReplyBulkSds(client *c, void *node, sds s);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment