Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f690647

Browse files
JakubOnderkamichael-grunder
authored andcommitted
Use zval_get_tmp_string method that is faster when provided zval is string
1 parent 2a2f908 commit f690647

File tree

2 files changed

+11
-17
lines changed

2 files changed

+11
-17
lines changed

library.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1089,7 +1089,7 @@ redis_cmd_append_sstr_dbl(smart_string *str, double value)
10891089
* the value may be serialized, if we're configured to do that. */
10901090
int redis_cmd_append_sstr_zval(smart_string *str, zval *z, RedisSock *redis_sock) {
10911091
int valfree, retval;
1092-
zend_string *zstr;
1092+
zend_string *zstr, *tmp;
10931093
size_t vallen;
10941094
char *val;
10951095

@@ -1098,9 +1098,9 @@ int redis_cmd_append_sstr_zval(smart_string *str, zval *z, RedisSock *redis_sock
10981098
retval = redis_cmd_append_sstr(str, val, vallen);
10991099
if (valfree) efree(val);
11001100
} else {
1101-
zstr = zval_get_string(z);
1102-
retval = redis_cmd_append_sstr_zstr(str, zstr);
1103-
zend_string_release(zstr);
1101+
zstr = zval_get_tmp_string(z, &tmp);
1102+
retval = redis_cmd_append_sstr(str, ZSTR_VAL(zstr), ZSTR_LEN(zstr));
1103+
zend_tmp_string_release(tmp);
11041104
}
11051105

11061106
return retval;
@@ -1128,12 +1128,12 @@ int redis_cmd_append_sstr_key_zstr(smart_string *dst, zend_string *key, RedisSoc
11281128
}
11291129

11301130
int redis_cmd_append_sstr_key_zval(smart_string *dst, zval *zv, RedisSock *redis_sock, short *slot) {
1131-
zend_string *key;
1131+
zend_string *key, *tmp;
11321132
int res;
11331133

1134-
key = zval_get_string(zv);
1135-
res = redis_cmd_append_sstr_key_zstr(dst, key, redis_sock, slot);
1136-
zend_string_release(key);
1134+
key = zval_get_tmp_string(zv, &tmp);
1135+
res = redis_cmd_append_sstr_key(dst, ZSTR_VAL(key), ZSTR_LEN(key), redis_sock, slot);
1136+
zend_tmp_string_release(tmp);
11371137

11381138
return res;
11391139
}

redis_commands.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3482,9 +3482,7 @@ int redis_hset_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
34823482
redis_cmd_init_sstr(&cmdstr, 1 + zend_hash_num_elements(Z_ARRVAL(z_args[1])) * 2, ZEND_STRL("HSET"));
34833483

34843484
/* Append key */
3485-
zkey = zval_get_string(&z_args[0]);
3486-
redis_cmd_append_sstr_key(&cmdstr, ZSTR_VAL(zkey), ZSTR_LEN(zkey), redis_sock, slot);
3487-
zend_string_release(zkey);
3485+
redis_cmd_append_sstr_key_zval(&cmdstr, &z_args[0], redis_sock, slot);
34883486

34893487
ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL(z_args[1]), zkey, z_ele) {
34903488
if (zkey != NULL) {
@@ -3502,15 +3500,11 @@ int redis_hset_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
35023500
redis_cmd_init_sstr(&cmdstr, argc, ZEND_STRL("HSET"));
35033501

35043502
/* Append key */
3505-
zkey = zval_get_string(&z_args[0]);
3506-
redis_cmd_append_sstr_key(&cmdstr, ZSTR_VAL(zkey), ZSTR_LEN(zkey), redis_sock, slot);
3507-
zend_string_release(zkey);
3503+
redis_cmd_append_sstr_key_zval(&cmdstr, &z_args[0], redis_sock, slot);
35083504

35093505
for (i = 1; i < argc; ++i) {
35103506
if (i % 2) {
3511-
zkey = zval_get_string(&z_args[i]);
3512-
redis_cmd_append_sstr(&cmdstr, ZSTR_VAL(zkey), ZSTR_LEN(zkey));
3513-
zend_string_release(zkey);
3507+
redis_cmd_append_sstr_zval(&cmdstr, &z_args[i], NULL);
35143508
} else {
35153509
redis_cmd_append_sstr_zval(&cmdstr, &z_args[i], redis_sock);
35163510
}

0 commit comments

Comments
 (0)