grpc
test
cpp
microbenchmarks
bm_fullstack_unary_ping_pong.cc
Go to the documentation of this file.
1
/*
2
*
3
* Copyright 2016 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
/* Benchmark gRPC end2end in various configurations */
20
21
#include "
test/core/util/test_config.h
"
22
#include "
test/cpp/microbenchmarks/fullstack_unary_ping_pong.h
"
23
#include "
test/cpp/util/test_config.h
"
24
25
namespace
grpc
{
26
namespace
testing
{
27
28
/*******************************************************************************
29
* CONFIGURATIONS
30
*/
31
32
// Replace "benchmark::internal::Benchmark" with "::testing::Benchmark" to use
33
// internal microbenchmarking tooling
34
static
void
SweepSizesArgs
(
benchmark::internal::Benchmark
*
b
) {
35
b
->Args({0, 0});
36
for
(
int
i
= 1;
i
<= 128 * 1024 * 1024;
i
*= 8) {
37
b
->Args({
i
, 0});
38
b
->Args({0,
i
});
39
b
->Args({
i
,
i
});
40
}
41
}
42
43
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
, TCP, NoOpMutator, NoOpMutator)
44
->Apply(
SweepSizesArgs
);
45
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
MinTCP
, NoOpMutator, NoOpMutator)
46
->Apply(
SweepSizesArgs
);
47
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
UDS
, NoOpMutator, NoOpMutator)
48
->Args({0, 0});
49
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
MinUDS
, NoOpMutator, NoOpMutator)
50
->Args({0, 0});
51
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
, InProcess, NoOpMutator, NoOpMutator)
52
->Apply(
SweepSizesArgs
);
53
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
MinInProcess
, NoOpMutator, NoOpMutator)
54
->Apply(
SweepSizesArgs
);
55
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
, SockPair, NoOpMutator, NoOpMutator)
56
->Args({0, 0});
57
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
MinSockPair
, NoOpMutator, NoOpMutator)
58
->Args({0, 0});
59
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
, InProcessCHTTP2, NoOpMutator, NoOpMutator)
60
->Apply(
SweepSizesArgs
);
61
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
MinInProcessCHTTP2
, NoOpMutator,
62
NoOpMutator)
63
->Apply(
SweepSizesArgs
);
64
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
65
Client_AddMetadata
<
RandomBinaryMetadata<10>
, 1>,
NoOpMutator
)
66
->Args({0, 0});
67
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
68
Client_AddMetadata
<
RandomBinaryMetadata<31>
, 1>,
NoOpMutator
)
69
->Args({0, 0});
70
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
71
Client_AddMetadata
<
RandomBinaryMetadata<100>
, 1>,
72
NoOpMutator
)
73
->Args({0, 0});
74
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
75
Client_AddMetadata
<
RandomBinaryMetadata<10>
, 2>,
NoOpMutator
)
76
->Args({0, 0});
77
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
78
Client_AddMetadata
<
RandomBinaryMetadata<31>
, 2>,
NoOpMutator
)
79
->Args({0, 0});
80
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
81
Client_AddMetadata
<
RandomBinaryMetadata<100>
, 2>,
82
NoOpMutator
)
83
->Args({0, 0});
84
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
NoOpMutator
,
85
Server_AddInitialMetadata
<
RandomBinaryMetadata<10>
, 1>)
86
->Args({0, 0});
87
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
NoOpMutator
,
88
Server_AddInitialMetadata
<
RandomBinaryMetadata<31>
, 1>)
89
->Args({0, 0});
90
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
NoOpMutator
,
91
Server_AddInitialMetadata
<
RandomBinaryMetadata<100>
, 1>)
92
->Args({0, 0});
93
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
94
Client_AddMetadata
<
RandomAsciiMetadata<10>
, 1>,
NoOpMutator
)
95
->Args({0, 0});
96
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
97
Client_AddMetadata
<
RandomAsciiMetadata<31>
, 1>,
NoOpMutator
)
98
->Args({0, 0});
99
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
100
Client_AddMetadata
<
RandomAsciiMetadata<100>
, 1>,
NoOpMutator
)
101
->Args({0, 0});
102
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
NoOpMutator
,
103
Server_AddInitialMetadata
<
RandomAsciiMetadata<10>
, 1>)
104
->Args({0, 0});
105
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
NoOpMutator
,
106
Server_AddInitialMetadata
<
RandomAsciiMetadata<31>
, 1>)
107
->Args({0, 0});
108
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
NoOpMutator
,
109
Server_AddInitialMetadata
<
RandomAsciiMetadata<100>
, 1>)
110
->Args({0, 0});
111
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcessCHTTP2
,
NoOpMutator
,
112
Server_AddInitialMetadata
<
RandomAsciiMetadata<10>
, 100>)
113
->Args({0, 0});
114
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
115
Client_AddMetadata
<
RandomBinaryMetadata<10>
, 1>,
NoOpMutator
)
116
->Args({0, 0});
117
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
118
Client_AddMetadata
<
RandomBinaryMetadata<31>
, 1>,
NoOpMutator
)
119
->Args({0, 0});
120
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
121
Client_AddMetadata
<
RandomBinaryMetadata<100>
, 1>,
122
NoOpMutator
)
123
->Args({0, 0});
124
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
125
Client_AddMetadata
<
RandomBinaryMetadata<10>
, 2>,
NoOpMutator
)
126
->Args({0, 0});
127
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
128
Client_AddMetadata
<
RandomBinaryMetadata<31>
, 2>,
NoOpMutator
)
129
->Args({0, 0});
130
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
131
Client_AddMetadata
<
RandomBinaryMetadata<100>
, 2>,
132
NoOpMutator
)
133
->Args({0, 0});
134
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
NoOpMutator
,
135
Server_AddInitialMetadata
<
RandomBinaryMetadata<10>
, 1>)
136
->Args({0, 0});
137
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
NoOpMutator
,
138
Server_AddInitialMetadata
<
RandomBinaryMetadata<31>
, 1>)
139
->Args({0, 0});
140
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
NoOpMutator
,
141
Server_AddInitialMetadata
<
RandomBinaryMetadata<100>
, 1>)
142
->Args({0, 0});
143
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
144
Client_AddMetadata
<
RandomAsciiMetadata<10>
, 1>,
NoOpMutator
)
145
->Args({0, 0});
146
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
147
Client_AddMetadata
<
RandomAsciiMetadata<31>
, 1>,
NoOpMutator
)
148
->Args({0, 0});
149
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
150
Client_AddMetadata
<
RandomAsciiMetadata<100>
, 1>,
NoOpMutator
)
151
->Args({0, 0});
152
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
NoOpMutator
,
153
Server_AddInitialMetadata
<
RandomAsciiMetadata<10>
, 1>)
154
->Args({0, 0});
155
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
NoOpMutator
,
156
Server_AddInitialMetadata
<
RandomAsciiMetadata<31>
, 1>)
157
->Args({0, 0});
158
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
NoOpMutator
,
159
Server_AddInitialMetadata
<
RandomAsciiMetadata<100>
, 1>)
160
->Args({0, 0});
161
BENCHMARK_TEMPLATE
(
BM_UnaryPingPong
,
InProcess
,
NoOpMutator
,
162
Server_AddInitialMetadata
<
RandomAsciiMetadata<10>
, 100>)
163
->Args({0, 0});
164
165
}
// namespace testing
166
}
// namespace grpc
167
168
// Some distros have RunSpecifiedBenchmarks under the benchmark namespace,
169
// and others do not. This allows us to support both modes.
170
namespace
benchmark
{
171
void
RunTheBenchmarksNamespaced
() {
RunSpecifiedBenchmarks
(); }
172
}
// namespace benchmark
173
174
int
main
(
int
argc,
char
** argv) {
175
grpc::testing::TestEnvironment
env
(&argc, argv);
176
LibraryInitializer
libInit;
177
::benchmark::Initialize
(&argc, argv);
178
grpc::testing::InitTest
(&argc, &argv,
false
);
179
benchmark::RunTheBenchmarksNamespaced
();
180
return
0;
181
}
grpc::testing::InitTest
void InitTest(int *argc, char ***argv, bool remove_flags)
Definition:
test_config_cc.cc:28
testing
Definition:
aws_request_signer_test.cc:25
benchmark
Definition:
bm_alarm.cc:55
generate.env
env
Definition:
generate.py:37
grpc
Definition:
grpcpp/alarm.h:33
grpc::testing::RandomAsciiMetadata
Definition:
fullstack_context_mutators.h:80
grpc::testing::MinInProcessCHTTP2
MinStackize< InProcessCHTTP2 > MinInProcessCHTTP2
Definition:
fullstack_fixtures.h:332
grpc::testing::MinInProcess
MinStackize< InProcess > MinInProcess
Definition:
fullstack_fixtures.h:330
benchmark::RunTheBenchmarksNamespaced
void RunTheBenchmarksNamespaced()
Definition:
bm_alarm.cc:56
grpc::testing::SweepSizesArgs
static void SweepSizesArgs(benchmark::internal::Benchmark *b)
Definition:
bm_callback_unary_ping_pong.cc:32
grpc::testing::BENCHMARK_TEMPLATE
BENCHMARK_TEMPLATE(BM_CallbackBidiStreaming, InProcess, NoOpMutator, NoOpMutator) -> Apply(StreamingPingPongMsgSizeArgs)
main
int main(int argc, char **argv)
Definition:
bm_fullstack_unary_ping_pong.cc:174
benchmark::RunSpecifiedBenchmarks
size_t RunSpecifiedBenchmarks()
Definition:
benchmark/src/benchmark.cc:437
grpc::testing::MinSockPair
MinStackize< SockPair > MinSockPair
Definition:
fullstack_fixtures.h:331
benchmark::Initialize
void Initialize(int *argc, char **argv)
Definition:
benchmark/src/benchmark.cc:602
b
uint64_t b
Definition:
abseil-cpp/absl/container/internal/layout_test.cc:53
fullstack_unary_ping_pong.h
benchmark::internal::Benchmark
Definition:
benchmark/include/benchmark/benchmark.h:834
LibraryInitializer
Definition:
helpers.h:33
test_config.h
UDS
@ UDS
Definition:
grpc_security_constants.h:143
grpc::testing::BM_UnaryPingPong
static void BM_UnaryPingPong(benchmark::State &state)
Definition:
fullstack_unary_ping_pong.h:43
grpc::testing::InProcess
Definition:
fullstack_fixtures.h:154
grpc::testing::TestEnvironment
Definition:
test/core/util/test_config.h:54
grpc::testing::MinTCP
MinStackize< TCP > MinTCP
Definition:
fullstack_fixtures.h:328
grpc::testing::RandomBinaryMetadata
Definition:
fullstack_context_mutators.h:59
test_config.h
grpc::testing::Client_AddMetadata
Definition:
fullstack_context_mutators.h:101
grpc::testing::InProcessCHTTP2
Definition:
fullstack_fixtures.h:296
grpc::testing::MinUDS
MinStackize< UDS > MinUDS
Definition:
fullstack_fixtures.h:329
grpc::testing::NoOpMutator
Definition:
fullstack_context_mutators.h:52
grpc::testing::Server_AddInitialMetadata
Definition:
fullstack_context_mutators.h:111
i
uint64_t i
Definition:
abseil-cpp/absl/container/btree_benchmark.cc:230
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:49