Skip to content

Commit

Permalink
Add benchmark for xlog. (#2559)
Browse files Browse the repository at this point in the history
  • Loading branch information
CPWstatic authored Sep 18, 2021
1 parent 2539ca6 commit 07b5470
Showing 1 changed file with 52 additions and 7 deletions.
59 changes: 52 additions & 7 deletions src/common/base/test/LoggingBenchmark.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

#include <folly/Benchmark.h>
#include <folly/init/Init.h>
#include <folly/logging/FileHandlerFactory.h>
#include <folly/logging/Init.h>
#include <folly/logging/LoggerDB.h>
#include <sys/types.h>

#include <iostream>
Expand All @@ -18,6 +21,26 @@
<< "123"; \
}

#define XLOG_SOMETHING(iters) \
for (int64_t i = 0; i < iters; i++) { \
XLOG(INFO) << "Hello" \
<< " " \
<< "Wolrd" \
<< "123"; \
}

class XlogInit {
public:
explicit XlogInit(folly::StringPiece config) { folly::initLogging(config); }
};

static void xlogRegistFileHandler() {
folly::LoggerDB::get().registerHandlerFactory(std::make_unique<folly::FileHandlerFactory>());
// Since glog outputs the logs to /tmp by default, so we explicitly set a file handler for
// xlog and output logs to /tmp.
folly::initLogging(";default=file:path=/tmp/logging_bm.log");
}

/***************************
*
* <glog/logging.h> native
Expand All @@ -34,6 +57,9 @@ void loggingUsingGlog(int64_t iters) { LOG_SOMETHING(iters); }
#include "common/base/Logging.h"
void loggingOptimized(int64_t iters) { LOG_SOMETHING(iters); }

#include <folly/logging/xlog.h>
void loggingUsingXlog(int64_t iters) { XLOG_SOMETHING(iters); }

/***************************
*
* Run benchmarks
Expand All @@ -49,6 +75,18 @@ BENCHMARK_RELATIVE(optimized_output_logs, iters) {
loggingOptimized(iters);
}

BENCHMARK_RELATIVE(xlog_output_logs, iters) {
BENCHMARK_SUSPEND { static XlogInit init(".=INFO:default"); }
loggingUsingXlog(iters);
}

BENCHMARK_RELATIVE(xlog_output_logs_async, iters) {
BENCHMARK_SUSPEND {
static XlogInit init(".=INFO:default;default:async=true,max_buffer_size=4096");
}
loggingUsingXlog(iters);
}

BENCHMARK_DRAW_LINE();

BENCHMARK(glog_skip_logs, iters) {
Expand All @@ -61,28 +99,35 @@ BENCHMARK_RELATIVE(optimized_skip_logs, iters) {
loggingOptimized(iters);
}

BENCHMARK_RELATIVE(xlog_skip_logs, iters) {
BENCHMARK_SUSPEND { static XlogInit init(".=WARN:default"); }
loggingUsingXlog(iters);
}
/***************************
*
* main()
*
**************************/
int main(int argc, char** argv) {
folly::init(&argc, &argv, true);
xlogRegistFileHandler();

folly::runBenchmarks();
return 0;
}

/*
Benchmark number is taken from WSL running on i7-8650
Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz
============================================================================
LoggingBenchmark.cpp relative time/iter iters/s
src/common/base/test/LoggingBenchmark.cpp relative time/iter iters/s
============================================================================
glog_output_logs 3.13us 319.07K
optimized_output_logs 100.10% 3.13us 319.39K
glog_output_logs 1.86us 536.82K
optimized_output_logs 100.26% 1.86us 538.24K
xlog_output_logs 52.73% 3.53us 283.09K
xlog_output_logs_async 53.40% 3.49us 286.68K
----------------------------------------------------------------------------
glog_skip_logs 1.76us 567.45K
optimized_skip_logs inf% 0.00fs Infinity
glog_skip_logs 1.27us 789.36K
optimized_skip_logs 94753.03% 1.34ns 747.94M
xlog_skip_logs 5215.83% 24.29ns 41.17M
============================================================================
*/

0 comments on commit 07b5470

Please sign in to comment.