aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/security
diff options
context:
space:
mode:
authorGravatar Soheil Hassas Yeganeh <soheil@google.com>2018-10-07 18:41:31 -0400
committerGravatar Soheil Hassas Yeganeh <soheil@google.com>2018-10-07 18:41:31 -0400
commit5faf1b72edba62a06dd6b4273c2a36f570b7c949 (patch)
treeed84b65e507ab6eb9883ef39f8b349692e0eb800 /src/core/lib/security
parent3b26fe7262a9db90dfb69f84ad582d9f71871a5c (diff)
Avoid unnecessary ref/unref calls to get mdelem from slices.
grpc_mdelem_from_slices() unref's the key and value. As a result, in quite a few cases on the hot path, we first ref slice, so that grpc_mdelem_from_slices() can unref them. Add grpc_mdelem_from_slices_no_unref() which does not unref() the input slices. This cuts 0.5% - 1.0% across app benchmarks.
Diffstat (limited to 'src/core/lib/security')
-rw-r--r--src/core/lib/security/credentials/plugin/plugin_credentials.cc3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.cc b/src/core/lib/security/credentials/plugin/plugin_credentials.cc
index 73946ce039..d97963d891 100644
--- a/src/core/lib/security/credentials/plugin/plugin_credentials.cc
+++ b/src/core/lib/security/credentials/plugin/plugin_credentials.cc
@@ -102,8 +102,7 @@ static grpc_error* process_plugin_result(
} else {
for (size_t i = 0; i < num_md; ++i) {
grpc_mdelem mdelem =
- grpc_mdelem_from_slices(grpc_slice_ref_internal(md[i].key),
- grpc_slice_ref_internal(md[i].value));
+ grpc_mdelem_from_slices_no_unref(md[i].key, md[i].value);
grpc_credentials_mdelem_array_add(r->md_array, mdelem);
GRPC_MDELEM_UNREF(mdelem);
}