This is an automated email from the ASF dual-hosted git repository. swebb2066 pushed a commit to branch improve_benchmark in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit 4d7531e39c886ef048b563a9f9c39c787b2e9cb2 Author: Stephen Webb <[email protected]> AuthorDate: Thu Nov 16 14:52:05 2023 +1100 Remove duplicate benchmark checks and add float benchmark checks --- src/test/cpp/benchmark/benchmark.cpp | 64 +++++++++++++++++------------------- 1 file changed, 30 insertions(+), 34 deletions(-) diff --git a/src/test/cpp/benchmark/benchmark.cpp b/src/test/cpp/benchmark/benchmark.cpp index 638a1590..2e71d7cb 100644 --- a/src/test/cpp/benchmark/benchmark.cpp +++ b/src/test/cpp/benchmark/benchmark.cpp @@ -7,6 +7,7 @@ #include <fmt/format.h> #include <benchmark/benchmark.h> #include <thread> +#include <cstdlib> using namespace log4cxx; @@ -116,18 +117,8 @@ BENCHMARK_DEFINE_F(benchmarker, logDisabledTrace)(benchmark::State& state) LOG4CXX_TRACE( m_logger, LOG4CXX_STR("This is a static string to see what happens")); } } -BENCHMARK_REGISTER_F(benchmarker, logDisabledTrace)->Name("Logging disabled trace")->MinWarmUpTime(benchmarker::warmUpSeconds()); -BENCHMARK_REGISTER_F(benchmarker, logDisabledTrace)->Name("Logging disabled trace")->Threads(benchmarker::threadCount()); - -BENCHMARK_DEFINE_F(benchmarker, logDisabledDebug)(benchmark::State& state) -{ - m_logger->setLevel(Level::getInfo()); - for (auto _ : state) - { - LOG4CXX_DEBUG(m_logger, LOG4CXX_STR("This is a static string to see what happens")); - } -} -BENCHMARK_REGISTER_F(benchmarker, logDisabledDebug)->Name("Logging disabled debug"); +BENCHMARK_REGISTER_F(benchmarker, logDisabledTrace)->Name("Testing disabled logging request")->MinWarmUpTime(benchmarker::warmUpSeconds()); +BENCHMARK_REGISTER_F(benchmarker, logDisabledTrace)->Name("Testing disabled logging request")->Threads(benchmarker::threadCount()); BENCHMARK_DEFINE_F(benchmarker, logStaticString)(benchmark::State& state) { @@ -137,60 +128,65 @@ BENCHMARK_DEFINE_F(benchmarker, logStaticString)(benchmark::State& state) LOG4CXX_INFO( m_logger, LOG4CXX_STR("This is a static string to see what happens")); } } -BENCHMARK_REGISTER_F(benchmarker, logStaticString)->Name("Logging info static string"); +BENCHMARK_REGISTER_F(benchmarker, logStaticString)->Name("Logging static string"); -BENCHMARK_DEFINE_F(benchmarker, logEnabledDebug)(benchmark::State& state) +#if LOG4CXX_HAS_FMT +BENCHMARK_DEFINE_F(benchmarker, logStaticStringFMT)(benchmark::State& state) { - m_logger->setLevel( Level::getDebug() ); for (auto _ : state) { - LOG4CXX_DEBUG( m_logger, LOG4CXX_STR("This is a static string to see what happens")); + LOG4CXX_INFO_FMT(m_logger, "This is a static string to see what happens"); } } -BENCHMARK_REGISTER_F(benchmarker, logEnabledDebug)->Name("Logging enabled debug static string"); +BENCHMARK_REGISTER_F(benchmarker, logStaticStringFMT)->Name("Logging static string with FMT"); -BENCHMARK_DEFINE_F(benchmarker, logEnabledTrace)(benchmark::State& state) +BENCHMARK_DEFINE_F(benchmarker, logIntValueFMT)(benchmark::State& state) { - m_logger->setLevel( Level::getTrace() ); + int x = 0; for (auto _ : state) { - LOG4CXX_DEBUG( m_logger, LOG4CXX_STR("This is a static string to see what happens")); + LOG4CXX_INFO_FMT( m_logger, "Hello: msg number {}", ++x); } } -BENCHMARK_REGISTER_F(benchmarker, logEnabledTrace)->Name("Logging enabled trace static string"); +BENCHMARK_REGISTER_F(benchmarker, logIntValueFMT)->Name("Logging int value with FMT"); +BENCHMARK_REGISTER_F(benchmarker, logIntValueFMT)->Name("Logging int value with FMT")->Threads(benchmarker::threadCount()); -#if LOG4CXX_HAS_FMT -BENCHMARK_DEFINE_F(benchmarker, logStaticStringFMT)(benchmark::State& state) +BENCHMARK_DEFINE_F(benchmarker, logIntPlusFloatValueFMT)(benchmark::State& state) { + int x = 0; for (auto _ : state) { - LOG4CXX_INFO_FMT(m_logger, "This is a static string to see what happens"); + auto f = static_cast<float>(rand()) / static_cast<float>(RAND_MAX); + LOG4CXX_INFO_FMT( m_logger, "Hello: msg number {} pseudo-random float {:.3f}", ++x, f); } } -BENCHMARK_REGISTER_F(benchmarker, logStaticStringFMT)->Name("Logging static string with FMT"); +BENCHMARK_REGISTER_F(benchmarker, logIntPlusFloatValueFMT)->Name("Logging int+float with FMT"); +BENCHMARK_REGISTER_F(benchmarker, logIntPlusFloatValueFMT)->Name("Logging int+float with FMT")->Threads(benchmarker::threadCount()); +#endif -BENCHMARK_DEFINE_F(benchmarker, logIntValueFMT)(benchmark::State& state) +BENCHMARK_DEFINE_F(benchmarker, logIntValueStream)(benchmark::State& state) { int x = 0; for (auto _ : state) { - LOG4CXX_INFO_FMT( m_logger, "Hello m_logger: msg number {}", ++x); + LOG4CXX_INFO( m_logger, "Hello: msg number " << ++x); } } -BENCHMARK_REGISTER_F(benchmarker, logIntValueFMT)->Name("Logging int value with FMT"); -BENCHMARK_REGISTER_F(benchmarker, logIntValueFMT)->Name("Logging int value with FMT")->Threads(benchmarker::threadCount()); -#endif +BENCHMARK_REGISTER_F(benchmarker, logIntValueStream)->Name("Logging int value with std::ostream"); +BENCHMARK_REGISTER_F(benchmarker, logIntValueStream)->Name("Logging int value with std::ostream")->Threads(benchmarker::threadCount()); -BENCHMARK_DEFINE_F(benchmarker, logIntValueStream)(benchmark::State& state) +BENCHMARK_DEFINE_F(benchmarker, logIntPlusFloatStream)(benchmark::State& state) { int x = 0; for (auto _ : state) { - LOG4CXX_INFO( m_logger, "Hello m_logger: msg number " << ++x); + auto f = static_cast<float>(rand()) / static_cast<float>(RAND_MAX); + LOG4CXX_INFO( m_logger, "Hello: msg number " << ++x + << " pseudo-random float " << std::setprecision(3) << std::fixed << f); } } -BENCHMARK_REGISTER_F(benchmarker, logIntValueStream)->Name("Logging int value with std::ostream"); -BENCHMARK_REGISTER_F(benchmarker, logIntValueStream)->Name("Logging int value with std::ostream")->Threads(benchmarker::threadCount()); +BENCHMARK_REGISTER_F(benchmarker, logIntPlusFloatStream)->Name("Logging int+float with std::ostream"); +BENCHMARK_REGISTER_F(benchmarker, logIntPlusFloatStream)->Name("Logging int+float with std::ostream")->Threads(benchmarker::threadCount()); template <class ...Args> void logWithConversionPattern(benchmark::State& state, Args&&... args)
