bm_call_create.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2017 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 /* This benchmark exists to ensure that the benchmark integration is
20  * working */
21 
22 #include <string.h>
23 
24 #include <sstream>
25 
26 #include <benchmark/benchmark.h>
27 
28 #include <grpc/grpc.h>
29 #include <grpc/grpc_security.h>
30 #include <grpc/support/alloc.h>
32 #include <grpcpp/channel.h>
34 
51 #include "src/proto/grpc/testing/echo.grpc.pb.h"
55 
57  grpc_core::ResourceQuota::Default()->memory_quota()->CreateMemoryAllocator(
58  "test"));
59 
61  // speed of light for call creation is zalloc, so benchmark a few interesting
62  // sizes
63  TrackCounters track_counters;
64  size_t sz = state.range(0);
65  for (auto _ : state) {
66  gpr_free(gpr_zalloc(sz));
67  }
68  track_counters.Finish(state);
69 }
71  ->Arg(64)
72  ->Arg(128)
73  ->Arg(256)
74  ->Arg(512)
75  ->Arg(1024)
76  ->Arg(1536)
77  ->Arg(2048)
78  ->Arg(3072)
79  ->Arg(4096)
80  ->Arg(5120)
81  ->Arg(6144)
82  ->Arg(7168);
83 
85 // Benchmarks creating full stacks
86 
88  public:
91 
92  grpc_channel* channel() const { return channel_; }
93 
94  private:
96 };
97 
100  grpc_channel* channel = grpc_channel_create("localhost:1234", creds, nullptr);
102  return channel;
103 }
104 
106  public:
108 };
109 
111  public:
114  "localhost:1234", GRPC_STATUS_UNAUTHENTICATED, "blah")) {}
115 };
116 
117 template <class Fixture>
119  TrackCounters track_counters;
123  void* method_hdl = grpc_channel_register_call(fixture.channel(), "/foo/bar",
124  nullptr, nullptr);
125  for (auto _ : state) {
127  fixture.channel(), nullptr, GRPC_PROPAGATE_DEFAULTS, cq, method_hdl,
128  deadline, nullptr));
129  }
131  track_counters.Finish(state);
132 }
133 
136 
138 // Benchmarks isolating individual filters
139 
140 static void* tag(int i) {
141  return reinterpret_cast<void*>(static_cast<intptr_t>(i));
142 }
143 
145  TrackCounters track_counters;
146  auto stub =
147  grpc::testing::EchoTestService::NewStub(grpc::CreateChannelInternal(
148  "",
149  grpc_lame_client_channel_create("localhost:1234",
151  std::vector<std::unique_ptr<
154  grpc::testing::EchoRequest send_request;
155  grpc::testing::EchoResponse recv_response;
156  grpc::Status recv_status;
157  for (auto _ : state) {
158  GPR_TIMER_SCOPE("BenchmarkCycle", 0);
159  grpc::ClientContext cli_ctx;
160  auto reader = stub->AsyncEcho(&cli_ctx, send_request, &cq);
161  reader->Finish(&recv_response, &recv_status, tag(0));
162  void* t;
163  bool ok;
164  GPR_ASSERT(cq.Next(&t, &ok));
165  GPR_ASSERT(ok);
166  }
167  track_counters.Finish(state);
168 }
170 
171 static void do_nothing(void* /*ignored*/) {}
172 
174  TrackCounters track_counters;
175 
183  grpc::testing::EchoRequest send_request;
184  grpc_slice send_request_slice =
186 
188  "localhost:1234", GRPC_STATUS_UNAUTHENTICATED, "blah");
190  void* rc = grpc_channel_register_call(
191  channel, "/grpc.testing.EchoTestService/Echo", nullptr, nullptr);
192  for (auto _ : state) {
193  GPR_TIMER_SCOPE("BenchmarkCycle", 0);
195  channel, nullptr, GRPC_PROPAGATE_DEFAULTS, cq, rc,
199  grpc_byte_buffer* request_payload_send =
200  grpc_raw_byte_buffer_create(&send_request_slice, 1);
201 
202  // Fill in call ops
203  grpc_op ops[6];
204  memset(ops, 0, sizeof(ops));
205  grpc_op* op = ops;
208  op++;
210  op->data.send_message.send_message = request_payload_send;
211  op++;
213  op++;
217  op++;
220  op++;
225  op++;
226 
228  (size_t)(op - ops),
229  (void*)1, nullptr));
233  GPR_ASSERT(ev.success != 0);
235  grpc_byte_buffer_destroy(request_payload_send);
239  }
242  grpc_slice_unref(send_request_slice);
243  track_counters.Finish(state);
244 }
246 
248  TrackCounters track_counters;
249 
257  grpc::testing::EchoRequest send_request;
258  grpc_slice send_request_slice =
260 
262  "localhost:1234", GRPC_STATUS_UNAUTHENTICATED, "blah");
264  void* rc = grpc_channel_register_call(
265  channel, "/grpc.testing.EchoTestService/Echo", nullptr, nullptr);
266  for (auto _ : state) {
267  GPR_TIMER_SCOPE("BenchmarkCycle", 0);
269  channel, nullptr, GRPC_PROPAGATE_DEFAULTS, cq, rc,
273  grpc_byte_buffer* request_payload_send =
274  grpc_raw_byte_buffer_create(&send_request_slice, 1);
275 
276  // Fill in call ops
277  grpc_op ops[3];
278  memset(ops, 0, sizeof(ops));
279  grpc_op* op = ops;
282  op++;
284  op->data.send_message.send_message = request_payload_send;
285  op++;
287  op++;
289  (size_t)(op - ops),
290  (void*)nullptr, nullptr));
291  memset(ops, 0, sizeof(ops));
292  op = ops;
296  op++;
299  op++;
304  op++;
305 
307  (size_t)(op - ops),
308  (void*)1, nullptr));
312  GPR_ASSERT(ev.success == 0);
314  nullptr);
316  GPR_ASSERT(ev.success != 0);
318  grpc_byte_buffer_destroy(request_payload_send);
322  }
325  grpc_slice_unref(send_request_slice);
326  track_counters.Finish(state);
327 }
329 
330 static void FilterDestroy(void* arg, grpc_error_handle /*error*/) {
331  gpr_free(arg);
332 }
333 
334 static void DoNothing(void* /*arg*/, grpc_error_handle /*error*/) {}
335 
337  public:
339  const grpc_resolved_address& /*address*/,
340  const grpc_channel_args* /*args*/) override {
341  return nullptr;
342  }
343 };
344 
345 static grpc_arg StringArg(const char* key, const char* value) {
346  grpc_arg a;
347  a.type = GRPC_ARG_STRING;
348  a.key = const_cast<char*>(key);
349  a.value.string = const_cast<char*>(value);
350  return a;
351 }
352 
356 };
357 
358 template <const grpc_channel_filter* kFilter, uint32_t kFlags>
359 struct Fixture {
360  const grpc_channel_filter* filter = kFilter;
361  const uint32_t flags = kFlags;
362 };
363 
364 namespace phony_filter {
365 
368 
370  grpc_transport_op* /*op*/) {}
371 
373  const grpc_call_element_args* /*args*/) {
374  return GRPC_ERROR_NONE;
375 }
376 
378  grpc_polling_entity* /*pollent*/) {}
379 
380 static void DestroyCallElem(grpc_call_element* /*elem*/,
381  const grpc_call_final_info* /*final_info*/,
382  grpc_closure* /*then_sched_closure*/) {}
383 
385  grpc_channel_element_args* /*args*/) {
386  return GRPC_ERROR_NONE;
387 }
388 
390 
392  const grpc_channel_info* /*channel_info*/) {}
393 
395  StartTransportStreamOp, nullptr,
396  StartTransportOp, 0,
398  DestroyCallElem, 0,
401  "phony_filter"};
402 
403 } // namespace phony_filter
404 
405 namespace phony_transport {
406 
407 /* Memory required for a single stream element - this is allocated by upper
408  layers and initialized by the transport */
409 size_t sizeof_stream; /* = sizeof(transport stream) */
410 
411 /* name of this transport implementation */
412 const char* name;
413 
414 /* implementation of grpc_transport_init_stream */
415 int InitStream(grpc_transport* /*self*/, grpc_stream* /*stream*/,
416  grpc_stream_refcount* /*refcount*/, const void* /*server_data*/,
417  grpc_core::Arena* /*arena*/) {
418  return 0;
419 }
420 
421 /* implementation of grpc_transport_set_pollset */
422 void SetPollset(grpc_transport* /*self*/, grpc_stream* /*stream*/,
423  grpc_pollset* /*pollset*/) {}
424 
425 /* implementation of grpc_transport_set_pollset */
426 void SetPollsetSet(grpc_transport* /*self*/, grpc_stream* /*stream*/,
427  grpc_pollset_set* /*pollset_set*/) {}
428 
429 /* implementation of grpc_transport_perform_stream_op */
430 void PerformStreamOp(grpc_transport* /*self*/, grpc_stream* /*stream*/,
433 }
434 
435 /* implementation of grpc_transport_perform_op */
436 void PerformOp(grpc_transport* /*self*/, grpc_transport_op* /*op*/) {}
437 
438 /* implementation of grpc_transport_destroy_stream */
439 void DestroyStream(grpc_transport* /*self*/, grpc_stream* /*stream*/,
440  grpc_closure* /*then_sched_closure*/) {}
441 
442 /* implementation of grpc_transport_destroy */
443 void Destroy(grpc_transport* /*self*/) {}
444 
445 /* implementation of grpc_transport_get_endpoint */
446 grpc_endpoint* GetEndpoint(grpc_transport* /*self*/) { return nullptr; }
447 
449  "phony_http2",
450  InitStream,
451  nullptr,
452  SetPollset,
455  PerformOp,
457  Destroy,
458  GetEndpoint};
459 
461 
463  static const grpc_arg_pointer_vtable vtable = {
464  // copy
465  [](void* p) { return p; },
466  // destroy
467  [](void*) {},
468  // cmp
469  [](void* a, void* b) { return grpc_core::QsortCompare(a, b); },
470  };
471  return grpc_channel_arg_pointer_create(const_cast<char*>(GRPC_ARG_TRANSPORT),
473 }
474 
475 } // namespace phony_transport
476 
477 class NoOp {
478  public:
479  class Op {
480  public:
482  void Finish() {}
483  };
484 };
485 
487  public:
489  op_ = {};
491  grpc_schedule_on_exec_ctx);
492  op_.send_initial_metadata = true;
494  }
495 
496  class Op {
497  public:
499  : batch_(arena) {
500  p->op_payload_.send_initial_metadata.send_initial_metadata = &batch_;
501  }
502  void Finish() {}
503 
504  private:
506  };
507 
508  private:
515 };
516 
517 // Test a filter in isolation. Fixture specifies the filter under test (use the
518 // Fixture<> template to specify this), and TestOp defines some unit of work to
519 // perform on said filter.
520 template <class Fixture, class TestOp>
522  TrackCounters track_counters;
524  std::ostringstream label;
525  FakeClientChannelFactory fake_client_channel_factory;
526 
527  std::vector<grpc_arg> args = {
529  &fake_client_channel_factory),
530  StringArg(GRPC_ARG_SERVER_URI, "localhost"),
531  };
532  if (fixture.flags & REQUIRES_TRANSPORT) {
533  args.push_back(phony_transport::Arg());
534  }
535  grpc_channel_args channel_args = {args.size(), args.data()};
536 
537  std::vector<const grpc_channel_filter*> filters;
538  if (fixture.filter != nullptr) {
539  filters.push_back(fixture.filter);
540  }
541  if (fixture.flags & CHECKS_NOT_LAST) {
542  filters.push_back(&phony_filter::phony_filter);
543  label << " #has_phony_filter";
544  }
545 
547  size_t channel_size = grpc_channel_stack_size(
548  filters.empty() ? nullptr : &filters[0], filters.size());
549  grpc_channel_stack* channel_stack =
550  static_cast<grpc_channel_stack*>(gpr_zalloc(channel_size));
552  "channel_stack_init",
553  grpc_channel_stack_init(1, FilterDestroy, channel_stack,
554  filters.empty() ? nullptr : &filters[0],
555  filters.size(), &channel_args, "CHANNEL",
556  channel_stack)));
558  grpc_call_stack* call_stack =
559  static_cast<grpc_call_stack*>(gpr_zalloc(channel_stack->call_stack_size));
561  gpr_cycle_counter start_time = gpr_get_cycle_counter();
563  grpc_call_final_info final_info;
564  TestOp test_op_data;
565  const int kArenaSize = 32 * 1024 * 1024;
567  grpc_call_element_args call_args{
568  call_stack,
569  nullptr,
570  context,
571  method,
572  start_time,
573  deadline,
575  nullptr};
576  while (state.KeepRunning()) {
577  GPR_TIMER_SCOPE("BenchmarkCycle", 0);
579  grpc_call_stack_init(channel_stack, 1, DoNothing, nullptr, &call_args));
580  typename TestOp::Op op(&test_op_data, call_stack, call_args.arena);
581  grpc_call_stack_destroy(call_stack, &final_info, nullptr);
582  op.Finish();
584  // recreate arena every 64k iterations to avoid oom
585  if (0 == (state.iterations() & 0xffff)) {
586  call_args.arena->Destroy();
587  call_args.arena =
589  }
590  }
591  call_args.arena->Destroy();
592  grpc_channel_stack_destroy(channel_stack);
594 
595  gpr_free(channel_stack);
596  gpr_free(call_stack);
597 
598  state.SetLabel(label.str());
599  track_counters.Finish(state);
600 }
601 
633 // This cmake target is disabled for now because it depends on OpenCensus, which
634 // is Bazel-only.
635 // typedef Fixture<&grpc_server_load_reporting_filter, CHECKS_NOT_LAST>
636 // LoadReportingFilter;
637 // BENCHMARK_TEMPLATE(BM_IsolatedFilter, LoadReportingFilter, NoOp);
638 // BENCHMARK_TEMPLATE(BM_IsolatedFilter, LoadReportingFilter,
639 // SendEmptyMetadata);
640 
642 // Benchmarks isolating grpc_call
643 
645 
646 typedef struct {
648 } call_data;
649 
652  call_data* calld = static_cast<call_data*>(elem->call_data);
653  // Construct list of closures to return.
655  if (op->recv_initial_metadata) {
656  closures.Add(op->payload->recv_initial_metadata.recv_initial_metadata_ready,
657  GRPC_ERROR_NONE, "recv_initial_metadata");
658  }
659  if (op->recv_message) {
660  closures.Add(op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE,
661  "recv_message");
662  }
663  if (op->recv_trailing_metadata) {
664  closures.Add(
665  op->payload->recv_trailing_metadata.recv_trailing_metadata_ready,
666  GRPC_ERROR_NONE, "recv_trailing_metadata");
667  }
668  if (op->on_complete != nullptr) {
669  closures.Add(op->on_complete, GRPC_ERROR_NONE, "on_complete");
670  }
671  // Execute closures.
672  closures.RunClosures(calld->call_combiner);
673 }
674 
677  if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
678  GRPC_ERROR_UNREF(op->disconnect_with_error);
679  }
681 }
682 
684  const grpc_call_element_args* args) {
685  call_data* calld = static_cast<call_data*>(elem->call_data);
686  calld->call_combiner = args->call_combiner;
687  return GRPC_ERROR_NONE;
688 }
689 
691  grpc_polling_entity* /*pollent*/) {}
692 
693 static void DestroyCallElem(grpc_call_element* /*elem*/,
694  const grpc_call_final_info* /*final_info*/,
695  grpc_closure* then_sched_closure) {
697 }
698 
700  grpc_channel_element_args* /*args*/) {
701  return GRPC_ERROR_NONE;
702 }
703 
705 
707  const grpc_channel_info* /*channel_info*/) {}
708 
710  StartTransportStreamOp, nullptr,
711  StartTransportOp, sizeof(call_data),
713  DestroyCallElem, 0,
716  "isolated_call_filter"};
717 } // namespace isolated_call_filter
718 
720  public:
722  // We are calling grpc_channel_stack_builder_create() instead of
723  // grpc_channel_create() here, which means we're not getting the
724  // grpc_init() called by grpc_channel_create(), but we are getting
725  // the grpc_shutdown() run by grpc_channel_destroy(). So we need to
726  // call grpc_init() manually here to balance things out.
727  grpc_init();
730  .PreconditionChannelArgs(nullptr);
732  builder.SetTarget("phony_target");
733  builder.SetChannelArgs(args);
735  {
737  channel_ =
738  grpc_core::Channel::CreateWithBuilder(&builder)->release()->c_ptr();
739  }
741  }
742 
743  void Finish(benchmark::State& state) override {
747  }
748 
749  grpc_channel* channel() const { return channel_; }
750  grpc_completion_queue* cq() const { return cq_; }
751 
752  private:
755 };
756 
760  void* method_hdl = grpc_channel_register_call(fixture.channel(), "/foo/bar",
761  nullptr, nullptr);
762  for (auto _ : state) {
763  GPR_TIMER_SCOPE("BenchmarkCycle", 0);
765  fixture.channel(), nullptr, GRPC_PROPAGATE_DEFAULTS, fixture.cq(),
766  method_hdl, deadline, nullptr));
767  }
768  fixture.Finish(state);
769 }
771 
775  void* method_hdl = grpc_channel_register_call(fixture.channel(), "/foo/bar",
776  nullptr, nullptr);
779  grpc_byte_buffer* recv_message = nullptr;
780  grpc_status_code status_code;
781  grpc_slice status_details = grpc_empty_slice();
782  grpc_metadata_array recv_initial_metadata;
783  grpc_metadata_array_init(&recv_initial_metadata);
784  grpc_metadata_array recv_trailing_metadata;
785  grpc_metadata_array_init(&recv_trailing_metadata);
786  grpc_op ops[6];
787  memset(ops, 0, sizeof(ops));
794  &recv_initial_metadata;
796  ops[4].data.recv_message.recv_message = &recv_message;
798  ops[5].data.recv_status_on_client.status = &status_code;
799  ops[5].data.recv_status_on_client.status_details = &status_details;
800  ops[5].data.recv_status_on_client.trailing_metadata = &recv_trailing_metadata;
801  for (auto _ : state) {
802  GPR_TIMER_SCOPE("BenchmarkCycle", 0);
804  fixture.channel(), nullptr, GRPC_PROPAGATE_DEFAULTS, fixture.cq(),
805  method_hdl, deadline, nullptr);
806  grpc_call_start_batch(call, ops, 6, tag(1), nullptr);
810  }
811  fixture.Finish(state);
812  grpc_metadata_array_destroy(&recv_initial_metadata);
813  grpc_metadata_array_destroy(&recv_trailing_metadata);
815 }
817 
821  void* method_hdl = grpc_channel_register_call(fixture.channel(), "/foo/bar",
822  nullptr, nullptr);
825  grpc_metadata_array recv_initial_metadata;
826  grpc_metadata_array_init(&recv_initial_metadata);
827  grpc_metadata_array recv_trailing_metadata;
828  grpc_metadata_array_init(&recv_trailing_metadata);
829  grpc_op ops[2];
830  memset(ops, 0, sizeof(ops));
834  &recv_initial_metadata;
836  fixture.channel(), nullptr, GRPC_PROPAGATE_DEFAULTS, fixture.cq(),
837  method_hdl, deadline, nullptr);
838  grpc_call_start_batch(call, ops, 2, tag(1), nullptr);
840  nullptr);
841  memset(ops, 0, sizeof(ops));
844  for (auto _ : state) {
845  GPR_TIMER_SCOPE("BenchmarkCycle", 0);
846  grpc_call_start_batch(call, ops, 1, tag(2), nullptr);
849  }
851  fixture.Finish(state);
852  grpc_metadata_array_destroy(&recv_initial_metadata);
853  grpc_metadata_array_destroy(&recv_trailing_metadata);
855 }
857 
858 // Some distros have RunSpecifiedBenchmarks under the benchmark namespace,
859 // and others do not. This allows us to support both modes.
860 namespace benchmark {
862 } // namespace benchmark
863 
864 int main(int argc, char** argv) {
865  grpc::testing::TestEnvironment env(&argc, argv);
866  LibraryInitializer libInit;
867  ::benchmark::Initialize(&argc, argv);
868  grpc::testing::InitTest(&argc, &argv, false);
870  return 0;
871 }
GRPC_CLOSURE_INIT
#define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler)
Definition: closure.h:115
grpc_arg
Definition: grpc_types.h:103
grpc_core::CallCombinerClosureList
Definition: call_combiner.h:144
grpc::testing::InitTest
void InitTest(int *argc, char ***argv, bool remove_flags)
Definition: test_config_cc.cc:28
grpc_slice_unref
GPRAPI void grpc_slice_unref(grpc_slice s)
Definition: slice_api.cc:32
grpc::CreateChannelInternal
std::shared_ptr< Channel > CreateChannelInternal(const std::string &host, grpc_channel *c_channel, std::vector< std::unique_ptr< experimental::ClientInterceptorFactoryInterface >> interceptor_creators)
NoOp::Op::Finish
void Finish()
Definition: bm_call_create.cc:482
Fixture
Definition: bm_call_create.cc:359
SendEmptyMetadata::Op
Definition: bm_call_create.cc:496
grpc_op::grpc_op_data::grpc_op_send_message::send_message
struct grpc_byte_buffer * send_message
Definition: grpc_types.h:668
grpc_core::CallCombiner
Definition: call_combiner.h:50
phony_transport::DestroyStream
void DestroyStream(grpc_transport *, grpc_stream *, grpc_closure *)
Definition: bm_call_create.cc:439
phony_transport::PerformOp
void PerformOp(grpc_transport *, grpc_transport_op *)
Definition: bm_call_create.cc:436
vtable
static const grpc_transport_vtable vtable
Definition: binder_transport.cc:680
REQUIRES_TRANSPORT
@ REQUIRES_TRANSPORT
Definition: bm_call_create.cc:355
GRPC_ERROR_NONE
#define GRPC_ERROR_NONE
Definition: error.h:234
grpc_op::grpc_op_data::grpc_op_recv_status_on_client::trailing_metadata
grpc_metadata_array * trailing_metadata
Definition: grpc_types.h:701
create_channel_internal.h
grpc_core::Arena::Create
static Arena * Create(size_t initial_size, MemoryAllocator *memory_allocator)
Definition: src/core/lib/resource_quota/arena.cc:58
phony_transport::SetPollset
void SetPollset(grpc_transport *, grpc_stream *, grpc_pollset *)
Definition: bm_call_create.cc:422
core_configuration.h
grpc_op::grpc_op_data::grpc_op_recv_status_on_client::status
grpc_status_code * status
Definition: grpc_types.h:702
grpc_raw_byte_buffer_create
GRPCAPI grpc_byte_buffer * grpc_raw_byte_buffer_create(grpc_slice *slices, size_t nslices)
Definition: byte_buffer.cc:34
grpc_core::HttpClientFilter::kFilter
static const grpc_channel_filter kFilter
Definition: http_client_filter.h:37
benchmark
Definition: bm_alarm.cc:55
generate.env
env
Definition: generate.py:37
grpc_channel_stack
Definition: channel_stack.h:202
GRPC_STATUS_UNAUTHENTICATED
@ GRPC_STATUS_UNAUTHENTICATED
Definition: include/grpc/impl/codegen/status.h:72
memset
return memset(p, 0, total)
IsolatedCallFixture::Finish
void Finish(benchmark::State &state) override
Definition: bm_call_create.cc:743
phony_filter::DestroyChannelElem
void DestroyChannelElem(grpc_channel_element *)
Definition: bm_call_create.cc:389
grpc_event_engine::experimental::MemoryAllocator
Definition: memory_allocator.h:35
grpc_transport_vtable
Definition: transport_impl.h:37
timers.h
NoOp::Op
Definition: bm_call_create.cc:479
InsecureChannel
Definition: bm_call_create.cc:105
GRPC_ARG_STRING
@ GRPC_ARG_STRING
Definition: grpc_types.h:80
CreateChannel
static grpc_channel * CreateChannel()
Definition: bm_call_create.cc:98
NoFilter
Fixture< nullptr, 0 > NoFilter
Definition: bm_call_create.cc:602
call_data
struct connected_channel_call_data call_data
grpc_op::grpc_op_data::send_initial_metadata
struct grpc_op::grpc_op_data::grpc_op_send_initial_metadata send_initial_metadata
BM_IsolatedCall_Unary
static void BM_IsolatedCall_Unary(benchmark::State &state)
Definition: bm_call_create.cc:772
phony_filter::DestroyCallElem
static void DestroyCallElem(grpc_call_element *, const grpc_call_final_info *, grpc_closure *)
Definition: bm_call_create.cc:380
GPR_TIMER_SCOPE
#define GPR_TIMER_SCOPE(tag, important)
Definition: src/core/lib/profiling/timers.h:43
NoOp
Definition: bm_call_create.cc:477
isolated_call_filter::SetPollsetOrPollsetSet
static void SetPollsetOrPollsetSet(grpc_call_element *, grpc_polling_entity *)
Definition: bm_call_create.cc:690
grpc_metadata_array
Definition: grpc_types.h:579
grpc_transport_stream_op_batch::on_complete
grpc_closure * on_complete
Definition: transport.h:304
SendEmptyMetadata::Op::batch_
grpc_metadata_batch batch_
Definition: bm_call_create.cc:505
send_request
Definition: ares_private.h:147
grpc_slice_new
GPRAPI grpc_slice grpc_slice_new(void *p, size_t len, void(*destroy)(void *))
Definition: slice/slice.cc:103
grpc_pollset_set
struct grpc_pollset_set grpc_pollset_set
Definition: iomgr_fwd.h:23
LameChannel::LameChannel
LameChannel()
Definition: bm_call_create.cc:112
string.h
grpc_lame_client_channel_create
GRPCAPI grpc_channel * grpc_lame_client_channel_create(const char *target, grpc_status_code error_code, const char *error_message)
Definition: lame_client.cc:131
grpc_core::Timestamp
Definition: src/core/lib/gprpp/time.h:62
phony_filter::SetPollsetOrPollsetSet
static void SetPollsetOrPollsetSet(grpc_call_element *, grpc_polling_entity *)
Definition: bm_call_create.cc:377
gpr_free
GPRAPI void gpr_free(void *ptr)
Definition: alloc.cc:51
isolated_call_filter::InitCallElem
static grpc_error_handle InitCallElem(grpc_call_element *elem, const grpc_call_element_args *args)
Definition: bm_call_create.cc:683
grpc::experimental::ClientInterceptorFactoryInterface
Definition: impl/codegen/client_interceptor.h:48
grpc_channel_element
Definition: channel_stack.h:186
elem
Timer elem
Definition: event_engine/iomgr_event_engine/timer_heap_test.cc:109
grpc_status_code
grpc_status_code
Definition: include/grpc/impl/codegen/status.h:28
client_channel.h
GRPC_QUEUE_SHUTDOWN
@ GRPC_QUEUE_SHUTDOWN
Definition: grpc_types.h:554
phony_transport::phony_transport_vtable
static const grpc_transport_vtable phony_transport_vtable
Definition: bm_call_create.cc:448
phony_transport::name
const char * name
Definition: bm_call_create.cc:412
IsolatedCallFixture
Definition: bm_call_create.cc:719
grpc_resolved_address
Definition: resolved_address.h:34
BM_IsolatedFilter
static void BM_IsolatedFilter(benchmark::State &state)
Definition: bm_call_create.cc:521
g_memory_allocator
static auto * g_memory_allocator
Definition: bm_call_create.cc:56
phony_filter::GetChannelInfo
void GetChannelInfo(grpc_channel_element *, const grpc_channel_info *)
Definition: bm_call_create.cc:391
GRPC_CALL_OK
@ GRPC_CALL_OK
Definition: grpc_types.h:466
status
absl::Status status
Definition: rls.cc:251
GRPC_CONTEXT_COUNT
@ GRPC_CONTEXT_COUNT
Definition: core/lib/channel/context.h:48
gpr_inf_future
GPRAPI gpr_timespec gpr_inf_future(gpr_clock_type type)
Definition: src/core/lib/gpr/time.cc:55
phony_filter::InitChannelElem
grpc_error_handle InitChannelElem(grpc_channel_element *, grpc_channel_element_args *)
Definition: bm_call_create.cc:384
benchmark::RunTheBenchmarksNamespaced
void RunTheBenchmarksNamespaced()
Definition: bm_alarm.cc:56
grpc_call_stack_init
grpc_error_handle grpc_call_stack_init(grpc_channel_stack *channel_stack, int initial_refs, grpc_iomgr_cb_func destroy, void *destroy_arg, const grpc_call_element_args *elem_args)
Definition: channel_stack.cc:180
GRPC_LOG_IF_ERROR
#define GRPC_LOG_IF_ERROR(what, error)
Definition: error.h:398
a
int a
Definition: abseil-cpp/absl/container/internal/hash_policy_traits_test.cc:88
xds_manager.p
p
Definition: xds_manager.py:60
start_time
static int64_t start_time
Definition: benchmark-getaddrinfo.c:37
grpc_security.h
TrackCounters::Finish
virtual void Finish(benchmark::State &state)
Definition: helpers.cc:44
grpc_channel_stack_destroy
void grpc_channel_stack_destroy(grpc_channel_stack *stack)
Definition: channel_stack.cc:166
grpc_call_element
Definition: channel_stack.h:194
async_greeter_client.stub
stub
Definition: hellostreamingworld/async_greeter_client.py:26
HttpServerFilter
Fixture<&grpc_core::HttpServerFilter::kFilter, CHECKS_NOT_LAST > HttpServerFilter
Definition: bm_call_create.cc:627
isolated_call_filter
Definition: bm_call_create.cc:644
ServerDeadlineFilter
Fixture<&grpc_server_deadline_filter, CHECKS_NOT_LAST > ServerDeadlineFilter
Definition: bm_call_create.cc:618
phony_transport::InitStream
int InitStream(grpc_transport *, grpc_stream *, grpc_stream_refcount *, const void *, grpc_core::Arena *)
Definition: bm_call_create.cc:415
grpc_core::Arena
Definition: src/core/lib/resource_quota/arena.h:45
grpc_arg_pointer_vtable
Definition: grpc_types.h:85
grpc_channel_args
Definition: grpc_types.h:132
isolated_call_filter::call_data::call_combiner
grpc_core::CallCombiner * call_combiner
Definition: bm_call_create.cc:647
main
int main(int argc, char **argv)
Definition: bm_call_create.cc:864
SendEmptyMetadata::op_payload_
grpc_transport_stream_op_batch_payload op_payload_
Definition: bm_call_create.cc:513
LameChannel
Definition: bm_call_create.cc:110
grpc_op::grpc_op_data::recv_message
struct grpc_op::grpc_op_data::grpc_op_recv_message recv_message
grpc_transport_op
Definition: transport.h:452
arena
grpc_core::ScopedArenaPtr arena
Definition: binder_transport_test.cc:237
phony_filter::InitCallElem
static grpc_error_handle InitCallElem(grpc_call_element *, const grpc_call_element_args *)
Definition: bm_call_create.cc:372
call
FilterStackCall * call
Definition: call.cc:750
grpc_op::data
union grpc_op::grpc_op_data data
phony_transport::PerformStreamOp
void PerformStreamOp(grpc_transport *, grpc_stream *, grpc_transport_stream_op_batch *op)
Definition: bm_call_create.cc:430
SendEmptyMetadata::start_time_
const gpr_timespec start_time_
Definition: bm_call_create.cc:510
gpr_zalloc
GPRAPI void * gpr_zalloc(size_t size)
Definition: alloc.cc:40
grpc_channel_register_call
GRPCAPI void * grpc_channel_register_call(grpc_channel *channel, const char *method, const char *host, void *reserved)
Definition: channel.cc:365
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
grpc_channel_stack::call_stack_size
size_t call_stack_size
Definition: channel_stack.h:208
grpc_metadata_array_destroy
GRPCAPI void grpc_metadata_array_destroy(grpc_metadata_array *array)
Definition: metadata_array.cc:35
http_client_filter.h
TrackCounters
Definition: helpers.h:51
DEBUG_LOCATION
#define DEBUG_LOCATION
Definition: debug_location.h:41
grpc_op::grpc_op_data::grpc_op_recv_message::recv_message
struct grpc_byte_buffer ** recv_message
Definition: grpc_types.h:693
benchmark::RunSpecifiedBenchmarks
size_t RunSpecifiedBenchmarks()
Definition: benchmark/src/benchmark.cc:437
string_util.h
trailing_metadata_recv
static grpc_metadata_array trailing_metadata_recv
Definition: test/core/fling/client.cc:43
grpc_core::ClientChannelFactory
Definition: client_channel_factory.h:32
phony_filter::phony_filter
static const grpc_channel_filter phony_filter
Definition: bm_call_create.cc:394
profile_analyzer.builder
builder
Definition: profile_analyzer.py:159
channel
wrapped_grpc_channel * channel
Definition: src/php/ext/grpc/call.h:33
phony_transport::sizeof_stream
size_t sizeof_stream
Definition: bm_call_create.cc:409
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
BM_IsolatedCall_NoOp
static void BM_IsolatedCall_NoOp(benchmark::State &state)
Definition: bm_call_create.cc:757
GRPC_OP_RECV_INITIAL_METADATA
@ GRPC_OP_RECV_INITIAL_METADATA
Definition: grpc_types.h:617
grpc_core::RefCountedPtr< grpc_core::Subchannel >
GPR_ASSERT
#define GPR_ASSERT(x)
Definition: include/grpc/impl/codegen/log.h:94
FakeClientChannelFactory::CreateSubchannel
grpc_core::RefCountedPtr< grpc_core::Subchannel > CreateSubchannel(const grpc_resolved_address &, const grpc_channel_args *) override
Definition: bm_call_create.cc:338
channel_arguments.h
gen_synthetic_protos.label
label
Definition: gen_synthetic_protos.py:102
grpc_core::CoreConfiguration::Get
static const CoreConfiguration & Get()
Definition: core_configuration.h:82
fixture
static const char fixture[]
Definition: test-fs-copyfile.c:36
phony_transport::GetEndpoint
grpc_endpoint * GetEndpoint(grpc_transport *)
Definition: bm_call_create.cc:446
send_message
Definition: send_message.py:1
grpc_core::ExecCtx::Flush
bool Flush()
Definition: exec_ctx.cc:69
SendEmptyMetadata
Definition: bm_call_create.cc:486
GRPC_ARG_SERVER_URI
#define GRPC_ARG_SERVER_URI
Definition: client_channel.h:89
grpc_channel_stack_no_post_init
void grpc_channel_stack_no_post_init(grpc_channel_stack *, grpc_channel_element *)
Definition: channel_stack.cc:282
grpc_call_unref
GRPCAPI void grpc_call_unref(grpc_call *call)
Definition: call.cc:1770
channel_stack.h
slice
grpc_slice slice
Definition: src/core/lib/surface/server.cc:467
grpc_call_stack
Definition: channel_stack.h:233
grpc_event
Definition: grpc_types.h:564
grpc_completion_queue
Definition: completion_queue.cc:347
BaseChannelFixture::channel
grpc_channel * channel() const
Definition: bm_call_create.cc:92
phony_filter
Definition: bm_call_create.cc:364
grpc.h
grpc_call
struct grpc_call grpc_call
Definition: grpc_types.h:70
response_payload_recv
static grpc_byte_buffer * response_payload_recv
Definition: test/core/fling/client.cc:44
SendEmptyMetadata::SendEmptyMetadata
SendEmptyMetadata()
Definition: bm_call_create.cc:488
gmock_output_test._
_
Definition: bloaty/third_party/googletest/googlemock/test/gmock_output_test.py:175
grpc_byte_buffer
Definition: grpc_types.h:43
call_combiner.h
SendEmptyMetadata::op_
grpc_transport_stream_op_batch op_
Definition: bm_call_create.cc:512
phony_filter::StartTransportOp
static void StartTransportOp(grpc_channel_element *, grpc_transport_op *)
Definition: bm_call_create.cc:369
grpc_insecure_credentials_create
GRPCAPI grpc_channel_credentials * grpc_insecure_credentials_create()
Definition: core/lib/security/credentials/insecure/insecure_credentials.cc:64
SendEmptyMetadata::closure_
grpc_closure closure_
Definition: bm_call_create.cc:514
grpc_op
Definition: grpc_types.h:640
GRPC_OP_SEND_MESSAGE
@ GRPC_OP_SEND_MESSAGE
Definition: grpc_types.h:602
isolated_call_filter::StartTransportStreamOp
static void StartTransportStreamOp(grpc_call_element *elem, grpc_transport_stream_op_batch *op)
Definition: bm_call_create.cc:650
BENCHMARK
BENCHMARK(BM_LameChannelCallCreateCpp)
channel.h
arg
Definition: cmdline.cc:40
grpc_slice_from_static_string
GPRAPI grpc_slice grpc_slice_from_static_string(const char *source)
Definition: slice/slice.cc:89
grpc_transport_stream_op_batch::payload
grpc_transport_stream_op_batch_payload * payload
Definition: transport.h:307
isolated_call_filter::DestroyChannelElem
void DestroyChannelElem(grpc_channel_element *)
Definition: bm_call_create.cc:704
grpc_empty_slice
GPRAPI grpc_slice grpc_empty_slice(void)
Definition: slice/slice.cc:42
grpc_slice
Definition: include/grpc/impl/codegen/slice.h:65
isolated_call_filter::InitChannelElem
grpc_error_handle InitChannelElem(grpc_channel_element *, grpc_channel_element_args *)
Definition: bm_call_create.cc:699
grpc_call_stack_destroy
void grpc_call_stack_destroy(grpc_call_stack *stack, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure)
Definition: channel_stack.cc:236
GPR_CLOCK_MONOTONIC
@ GPR_CLOCK_MONOTONIC
Definition: gpr_types.h:36
intptr_t
_W64 signed int intptr_t
Definition: stdint-msvc2008.h:118
grpc_core::ResourceQuota::Default
static ResourceQuotaRefPtr Default()
Definition: resource_quota.cc:27
IsolatedCallFixture::IsolatedCallFixture
IsolatedCallFixture()
Definition: bm_call_create.cc:721
benchmark::Initialize
void Initialize(int *argc, char **argv)
Definition: benchmark/src/benchmark.cc:602
grpc_core::ChannelStackBuilderImpl
Definition: channel_stack_builder_impl.h:33
Fixture::filter
const grpc_channel_filter * filter
Definition: bm_call_create.cc:360
grpc_polling_entity
Definition: polling_entity.h:38
grpc_call_element_args
Definition: channel_stack.h:80
IsolatedCallFixture::cq_
grpc_completion_queue * cq_
Definition: bm_call_create.cc:753
b
uint64_t b
Definition: abseil-cpp/absl/container/internal/layout_test.cc:53
grpc_core::ClientChannelFactory::CreateChannelArg
static grpc_arg CreateChannelArg(ClientChannelFactory *factory)
Definition: client_channel_factory.cc:47
helpers.h
resource_quota.h
SendEmptyMetadata::deadline_
const gpr_timespec deadline_
Definition: bm_call_create.cc:509
grpc_core::CoreConfiguration::channel_args_preconditioning
const ChannelArgsPreconditioning & channel_args_preconditioning() const
Definition: core_configuration.h:139
gpr_now
GPRAPI gpr_timespec gpr_now(gpr_clock_type clock)
SendEmptyMetadata::Op::Op
Op(SendEmptyMetadata *p, grpc_call_stack *, grpc_core::Arena *arena)
Definition: bm_call_create.cc:498
grpc_core::ExecCtx
Definition: exec_ctx.h:97
IsolatedCallFixture::channel_
grpc_channel * channel_
Definition: bm_call_create.cc:754
grpc_channel_filter
Definition: channel_stack.h:111
message_size_filter.h
grpc_op::op
grpc_op_type op
Definition: grpc_types.h:642
LibraryInitializer
Definition: helpers.h:33
BM_Zalloc
void BM_Zalloc(benchmark::State &state)
Definition: bm_call_create.cc:60
FakeClientChannelFactory
Definition: bm_call_create.cc:336
FixtureFlags
FixtureFlags
Definition: bm_call_create.cc:353
grpc_op::grpc_op_data::grpc_op_send_initial_metadata::count
size_t count
Definition: grpc_types.h:653
grpc::ClientContext
Definition: grpcpp/impl/codegen/client_context.h:195
grpc_op::grpc_op_data::grpc_op_recv_status_on_client::status_details
grpc_slice * status_details
Definition: grpc_types.h:703
IsolatedCallFixture::cq
grpc_completion_queue * cq() const
Definition: bm_call_create.cc:750
IsolatedCallFixture::channel
grpc_channel * channel() const
Definition: bm_call_create.cc:749
isolated_call_filter::call_data
Definition: bm_call_create.cc:646
ClientDeadlineFilter
Fixture<&grpc_client_deadline_filter, CHECKS_NOT_LAST > ClientDeadlineFilter
Definition: bm_call_create.cc:614
details
static grpc_slice details
Definition: test/core/fling/client.cc:46
grpc_core::CallCombinerClosureList::RunClosures
void RunClosures(CallCombiner *call_combiner)
Definition: call_combiner.h:161
test_config.h
value
const char * value
Definition: hpack_parser_table.cc:165
grpc_channel_create_registered_call
GRPCAPI grpc_call * grpc_channel_create_registered_call(grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, grpc_completion_queue *completion_queue, void *registered_call_handle, gpr_timespec deadline, void *reserved)
Definition: channel.cc:394
PhonyFilter
Fixture<&phony_filter::phony_filter, 0 > PhonyFilter
Definition: bm_call_create.cc:604
BaseChannelFixture
Definition: bm_call_create.cc:87
grpc_channel_credentials_release
GRPCAPI void grpc_channel_credentials_release(grpc_channel_credentials *creds)
Definition: credentials.cc:36
isolated_call_filter::StartTransportOp
static void StartTransportOp(grpc_channel_element *, grpc_transport_op *op)
Definition: bm_call_create.cc:675
GRPC_OP_RECV_MESSAGE
@ GRPC_OP_RECV_MESSAGE
Definition: grpc_types.h:621
grpc_transport_stream_op_batch_payload
Definition: transport.h:341
grpc_channel_stack_size
size_t grpc_channel_stack_size(const grpc_channel_filter **filters, size_t filter_count)
Definition: channel_stack.cc:51
SendEmptyMetadata::Op::Finish
void Finish()
Definition: bm_call_create.cc:502
grpc_channel_create
GRPCAPI grpc_channel * grpc_channel_create(const char *target, grpc_channel_credentials *creds, const grpc_channel_args *args)
Definition: chttp2_connector.cc:366
StringArg
static grpc_arg StringArg(const char *key, const char *value)
Definition: bm_call_create.cc:345
GRPC_PROPAGATE_DEFAULTS
#define GRPC_PROPAGATE_DEFAULTS
Definition: propagation_bits.h:45
phony_transport::Destroy
void Destroy(grpc_transport *)
Definition: bm_call_create.cc:443
key
const char * key
Definition: hpack_parser_table.cc:164
absl::flags_internal
Definition: abseil-cpp/absl/flags/commandlineflag.h:40
grpc_core::QsortCompare
int QsortCompare(const T &a, const T &b)
Definition: useful.h:95
http_server_filter.h
grpc_core::CallCombinerClosureList::Add
void Add(grpc_closure *closure, grpc_error_handle error, const char *reason)
Definition: call_combiner.h:150
grpc_completion_queue_destroy
GRPCAPI void grpc_completion_queue_destroy(grpc_completion_queue *cq)
Definition: completion_queue.cc:1424
GRPC_CLIENT_CHANNEL
@ GRPC_CLIENT_CHANNEL
Definition: channel_stack_type.h:26
GRPC_OP_SEND_INITIAL_METADATA
@ GRPC_OP_SEND_INITIAL_METADATA
Definition: grpc_types.h:598
exec_ctx
grpc_core::ExecCtx exec_ctx
Definition: end2end_binder_transport_test.cc:75
tag
static void * tag(int i)
Definition: bm_call_create.cc:140
grpc_op::grpc_op_data::send_message
struct grpc_op::grpc_op_data::grpc_op_send_message send_message
phony_transport::SetPollsetSet
void SetPollsetSet(grpc_transport *, grpc_stream *, grpc_pollset_set *)
Definition: bm_call_create.cc:426
BENCHMARK_TEMPLATE
BENCHMARK_TEMPLATE(BM_CallCreateDestroy, InsecureChannel)
SendEmptyMetadata::method_
const grpc_slice method_
Definition: bm_call_create.cc:511
benchmark::State
Definition: benchmark/include/benchmark/benchmark.h:503
alloc.h
HttpClientFilter
Fixture<&grpc_core::HttpClientFilter::kFilter, CHECKS_NOT_LAST|REQUIRES_TRANSPORT > HttpClientFilter
Definition: bm_call_create.cc:623
grpc_op::grpc_op_data::recv_status_on_client
struct grpc_op::grpc_op_data::grpc_op_recv_status_on_client recv_status_on_client
grpc::testing::TestEnvironment
Definition: test/core/util/test_config.h:54
grpc_call_context_element
Definition: core/lib/channel/context.h:51
deadline_filter.h
BM_LameChannelCallCreateCoreSeparateBatch
static void BM_LameChannelCallCreateCoreSeparateBatch(benchmark::State &state)
Definition: bm_call_create.cc:247
grpc_channel_stack_init
grpc_error_handle grpc_channel_stack_init(int initial_refs, grpc_iomgr_cb_func destroy, void *destroy_arg, const grpc_channel_filter **filters, size_t filter_count, const grpc_channel_args *channel_args, const char *name, grpc_channel_stack *stack)
Definition: channel_stack.cc:105
grpc_byte_buffer_destroy
GRPCAPI void grpc_byte_buffer_destroy(grpc_byte_buffer *bb)
Definition: byte_buffer.cc:81
grpc_completion_queue_next
GRPCAPI grpc_event grpc_completion_queue_next(grpc_completion_queue *cq, gpr_timespec deadline, void *reserved)
Definition: completion_queue.cc:1133
CompressFilter
Fixture<&grpc_message_compress_filter, CHECKS_NOT_LAST > CompressFilter
Definition: bm_call_create.cc:610
grpc::Status
Definition: include/grpcpp/impl/codegen/status.h:35
grpc_transport_stream_op_batch::send_initial_metadata
bool send_initial_metadata
Definition: transport.h:310
ok
bool ok
Definition: async_end2end_test.cc:197
grpc_channel_destroy
GRPCAPI void grpc_channel_destroy(grpc_channel *channel)
Definition: channel.cc:437
state
Definition: bloaty/third_party/zlib/contrib/blast/blast.c:41
ClientChannelFilter
Fixture<&grpc_core::ClientChannel::kFilterVtable, 0 > ClientChannelFilter
Definition: bm_call_create.cc:608
isolated_call_filter::GetChannelInfo
void GetChannelInfo(grpc_channel_element *, const grpc_channel_info *)
Definition: bm_call_create.cc:706
test_config.h
GRPC_ERROR_UNREF
#define GRPC_ERROR_UNREF(err)
Definition: error.h:262
grpc_core::ExecCtx::Run
static void Run(const DebugLocation &location, grpc_closure *closure, grpc_error_handle error)
Definition: exec_ctx.cc:98
grpc_channel
struct grpc_channel grpc_channel
Definition: grpc_types.h:62
isolated_call_filter::DestroyCallElem
static void DestroyCallElem(grpc_call_element *, const grpc_call_final_info *, grpc_closure *then_sched_closure)
Definition: bm_call_create.cc:693
grpc_transport
Definition: transport_impl.h:89
phony_transport::Arg
grpc_arg Arg()
Definition: bm_call_create.cc:462
grpc_stream
struct grpc_stream grpc_stream
Definition: transport.h:174
InsecureChannel::InsecureChannel
InsecureChannel()
Definition: bm_call_create.cc:107
message_compress_filter.h
channel_stack_builder_impl.h
BaseChannelFixture::~BaseChannelFixture
~BaseChannelFixture()
Definition: bm_call_create.cc:90
CHECKS_NOT_LAST
@ CHECKS_NOT_LAST
Definition: bm_call_create.cc:354
isolated_call_filter::isolated_call_filter
static const grpc_channel_filter isolated_call_filter
Definition: bm_call_create.cc:709
grpc_channel_element_args
Definition: channel_stack.h:74
context
grpc::ClientContext context
Definition: istio_echo_server_lib.cc:61
BaseChannelFixture::BaseChannelFixture
BaseChannelFixture(grpc_channel *channel)
Definition: bm_call_create.cc:89
MessageSizeFilter
Fixture<&grpc_message_size_filter, CHECKS_NOT_LAST > MessageSizeFilter
Definition: bm_call_create.cc:630
grpc_core::Timestamp::InfFuture
static constexpr Timestamp InfFuture()
Definition: src/core/lib/gprpp/time.h:79
BaseChannelFixture::channel_
grpc_channel *const channel_
Definition: bm_call_create.cc:95
grpc_completion_queue_create_for_next
GRPCAPI grpc_completion_queue * grpc_completion_queue_create_for_next(void *reserved)
Definition: completion_queue_factory.cc:62
connected_channel.h
grpc_op::grpc_op_data::recv_initial_metadata
struct grpc_op::grpc_op_data::grpc_op_recv_initial_metadata recv_initial_metadata
transport_impl.h
grpc_call_final_info
Definition: channel_stack.h:95
do_nothing
static void do_nothing(void *)
Definition: bm_call_create.cc:171
grpc::CompletionQueue
Definition: include/grpcpp/impl/codegen/completion_queue.h:104
gpr_timespec
Definition: gpr_types.h:50
grpc_core::Channel::CreateWithBuilder
static absl::StatusOr< RefCountedPtr< Channel > > CreateWithBuilder(ChannelStackBuilder *builder)
Definition: channel.cc:106
grpc_event::type
grpc_completion_type type
Definition: grpc_types.h:566
grpc_init
GRPCAPI void grpc_init(void)
Definition: init.cc:146
grpc_error
Definition: error_internal.h:42
BM_LameChannelCallCreateCore
static void BM_LameChannelCallCreateCore(benchmark::State &state)
Definition: bm_call_create.cc:173
GRPC_OP_RECV_STATUS_ON_CLIENT
@ GRPC_OP_RECV_STATUS_ON_CLIENT
Definition: grpc_types.h:627
grpc_op::grpc_op_data::grpc_op_recv_initial_metadata::recv_initial_metadata
grpc_metadata_array * recv_initial_metadata
Definition: grpc_types.h:685
GPR_CLOCK_REALTIME
@ GPR_CLOCK_REALTIME
Definition: gpr_types.h:39
method
NSString * method
Definition: ProtoMethod.h:28
grpc_metadata_batch
Definition: metadata_batch.h:1259
grpc_pollset
Definition: bm_cq_multiple_threads.cc:37
FilterDestroy
static void FilterDestroy(void *arg, grpc_error_handle)
Definition: bm_call_create.cc:330
grpc_channel_info
Definition: grpc_types.h:720
grpc_transport_stream_op_batch
Definition: transport.h:284
grpc_closure
Definition: closure.h:56
grpc_channel_arg_pointer_create
grpc_arg grpc_channel_arg_pointer_create(char *name, void *value, const grpc_arg_pointer_vtable *vtable)
Definition: channel_args.cc:492
op
static grpc_op * op
Definition: test/core/fling/client.cc:47
grpc_event::success
int success
Definition: grpc_types.h:572
ops
static grpc_op ops[6]
Definition: test/core/fling/client.cc:39
initial_metadata_recv
static grpc_metadata_array initial_metadata_recv
Definition: test/core/fling/client.cc:42
phony_transport
Definition: bm_call_create.cc:405
BM_CallCreateDestroy
static void BM_CallCreateDestroy(benchmark::State &state)
Definition: bm_call_create.cc:118
grpc_call_start_batch
GRPCAPI grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, size_t nops, void *tag, void *reserved)
Definition: call.cc:1831
grpc_endpoint
Definition: endpoint.h:105
BM_IsolatedCall_StreamingSend
static void BM_IsolatedCall_StreamingSend(benchmark::State &state)
Definition: bm_call_create.cc:818
grpc_channel_credentials
Definition: src/core/lib/security/credentials/credentials.h:96
grpc_core::ChannelArgsPreconditioning::PreconditionChannelArgs
ChannelArgs PreconditionChannelArgs(const grpc_channel_args *args) const
Definition: channel_args_preconditioning.cc:34
cq
static grpc_completion_queue * cq
Definition: test/core/fling/client.cc:37
NoOp::Op::Op
Op(NoOp *, grpc_call_stack *, grpc_core::Arena *)
Definition: bm_call_create.cc:481
reader
void reader(void *n)
Definition: libuv/docs/code/locks/main.c:8
grpc_core::ExecCtx::Get
static ExecCtx * Get()
Definition: exec_ctx.h:205
grpc_stream_refcount
Definition: transport.h:178
GRPC_OP_SEND_CLOSE_FROM_CLIENT
@ GRPC_OP_SEND_CLOSE_FROM_CLIENT
Definition: grpc_types.h:607
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
phony_filter::StartTransportStreamOp
static void StartTransportStreamOp(grpc_call_element *, grpc_transport_stream_op_batch *)
Definition: bm_call_create.cc:366
DoNothing
static void DoNothing(void *, grpc_error_handle)
Definition: bm_call_create.cc:334
grpc_metadata_array_init
GRPCAPI void grpc_metadata_array_init(grpc_metadata_array *array)
Definition: metadata_array.cc:30
BM_LameChannelCallCreateCpp
static void BM_LameChannelCallCreateCpp(benchmark::State &state)
Definition: bm_call_create.cc:144
GRPC_ERROR_IS_NONE
#define GRPC_ERROR_IS_NONE(err)
Definition: error.h:241
channel.h
GRPC_ARG_TRANSPORT
#define GRPC_ARG_TRANSPORT
Definition: transport.h:71


grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:48