Skip to content

Commit 8541930

Browse files
Abseil Teamcopybara-github
authored andcommitted
log_benchmark: Add VLOG_IS_ON benchmark
PiperOrigin-RevId: 624149255 Change-Id: I74815463226adaf183af531b8d373782d20b2ef2
1 parent 8f9e5f0 commit 8541930

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

absl/log/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,7 @@ cc_test(
664664
":log_entry",
665665
":log_sink",
666666
":log_sink_registry",
667+
":vlog_is_on",
667668
"//absl/base:core_headers",
668669
"//absl/base:log_severity",
669670
"//absl/flags:flag",

absl/log/log_benchmark.cc

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
#include "absl/flags/flag.h"
1818
#include "absl/log/check.h"
1919
#include "absl/log/globals.h"
20+
#include "absl/log/internal/flags.h"
2021
#include "absl/log/log.h"
2122
#include "absl/log/log_entry.h"
2223
#include "absl/log/log_sink.h"
2324
#include "absl/log/log_sink_registry.h"
25+
#include "absl/log/vlog_is_on.h"
2426
#include "benchmark/benchmark.h"
2527

2628
namespace {
@@ -93,5 +95,70 @@ static void BM_EnabledLogOverhead(benchmark::State& state) {
9395
}
9496
BENCHMARK(BM_EnabledLogOverhead);
9597

98+
static void BM_VlogIsOnOverhead(benchmark::State& state) {
99+
// It would make sense to do this only when state.thread_index == 0,
100+
// but thread_index is an int on some platforms (e.g. Android) and a
101+
// function returning an int on others. So we just do it on all threads.
102+
// TODO(b/152609127): set only if thread_index == 0.
103+
absl::SetFlag(&FLAGS_v, 0);
104+
105+
while (state.KeepRunningBatch(10)) {
106+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 1
107+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 2
108+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 3
109+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 4
110+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 5
111+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 6
112+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 7
113+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 8
114+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 9
115+
benchmark::DoNotOptimize(VLOG_IS_ON(0)); // 10
116+
}
117+
}
118+
BENCHMARK(BM_VlogIsOnOverhead)->ThreadRange(1, 64);
119+
120+
static void BM_VlogIsNotOnOverhead(benchmark::State& state) {
121+
// It would make sense to do this only when state.thread_index == 0,
122+
// but thread_index is an int on some platforms (e.g. Android) and a
123+
// function returning an int on others. So we just do it on all threads.
124+
// TODO(b/152609127): set only if thread_index == 0.
125+
absl::SetFlag(&FLAGS_v, 0);
126+
127+
while (state.KeepRunningBatch(10)) {
128+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 1
129+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 2
130+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 3
131+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 4
132+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 5
133+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 6
134+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 7
135+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 8
136+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 9
137+
benchmark::DoNotOptimize(VLOG_IS_ON(1)); // 10
138+
}
139+
}
140+
BENCHMARK(BM_VlogIsNotOnOverhead)->ThreadRange(1, 64);
141+
142+
static void BM_LogEveryNOverhead(benchmark::State& state) {
143+
absl::ScopedStderrThreshold disable_stderr_logging(
144+
absl::LogSeverityAtLeast::kInfinity);
145+
absl::SetMinLogLevel(absl::LogSeverityAtLeast::kInfinity);
146+
ABSL_ATTRIBUTE_UNUSED NullLogSink null_sink;
147+
148+
while (state.KeepRunningBatch(10)) {
149+
LOG_EVERY_N_SEC(INFO, 10);
150+
LOG_EVERY_N_SEC(INFO, 20);
151+
LOG_EVERY_N_SEC(INFO, 30);
152+
LOG_EVERY_N_SEC(INFO, 40);
153+
LOG_EVERY_N_SEC(INFO, 50);
154+
LOG_EVERY_N_SEC(INFO, 60);
155+
LOG_EVERY_N_SEC(INFO, 70);
156+
LOG_EVERY_N_SEC(INFO, 80);
157+
LOG_EVERY_N_SEC(INFO, 90);
158+
LOG_EVERY_N_SEC(INFO, 100);
159+
}
160+
}
161+
BENCHMARK(BM_LogEveryNOverhead)->ThreadRange(1, 64);
162+
96163
} // namespace
97164

0 commit comments

Comments
 (0)