Skip to content

Commit d95be7f

Browse files
derekmaurocopybara-github
authored andcommitted
Release benchmarks for absl::Status and absl::StatusOr
PiperOrigin-RevId: 739196836 Change-Id: I27ad114efafab91de227ec0a9e2d1d09dd1addc2
1 parent c4ff4d5 commit d95be7f

File tree

3 files changed

+540
-0
lines changed

3 files changed

+540
-0
lines changed

absl/status/BUILD.bazel

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,17 @@ cc_test(
8686
],
8787
)
8888

89+
cc_binary(
90+
name = "status_benchmark",
91+
testonly = True,
92+
srcs = ["status_benchmark.cc"],
93+
tags = ["benchmark"],
94+
deps = [
95+
":status",
96+
"@google_benchmark//:benchmark_main",
97+
],
98+
)
99+
89100
cc_library(
90101
name = "statusor",
91102
srcs = [
@@ -132,6 +143,18 @@ cc_test(
132143
],
133144
)
134145

146+
cc_binary(
147+
name = "statusor_benchmark",
148+
testonly = True,
149+
srcs = ["statusor_benchmark.cc"],
150+
tags = ["benchmark"],
151+
deps = [
152+
":status",
153+
":statusor",
154+
"@google_benchmark//:benchmark_main",
155+
],
156+
)
157+
135158
cc_library(
136159
name = "status_matchers",
137160
testonly = 1,

absl/status/status_benchmark.cc

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright 2025 The Abseil Authors.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// https://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
#include <utility>
16+
#include "absl/status/status.h"
17+
#include "benchmark/benchmark.h"
18+
19+
namespace {
20+
21+
void BM_CreateOk(benchmark::State& state) {
22+
for (auto _ : state) {
23+
absl::Status s; // ok.
24+
benchmark::DoNotOptimize(s);
25+
}
26+
}
27+
BENCHMARK(BM_CreateOk);
28+
29+
void BM_CreateBad(benchmark::State& state) {
30+
for (auto _ : state) {
31+
absl::Status s(absl::StatusCode::kInvalidArgument, "message");
32+
benchmark::DoNotOptimize(s);
33+
}
34+
}
35+
BENCHMARK(BM_CreateBad);
36+
37+
} // namespace

0 commit comments

Comments
 (0)