This is an automated email from the ASF dual-hosted git repository.

swebb2066 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git


The following commit(s) were added to refs/heads/master by this push:
     new a033f5b9 Support performance benchmarking using std::format (#315)
a033f5b9 is described below

commit a033f5b9acf82506348fe4f94ac49a0a24a47fe3
Author: Stephen Webb <[email protected]>
AuthorDate: Wed Dec 20 10:52:56 2023 +1100

    Support performance benchmarking using std::format (#315)
---
 src/test/cpp/benchmark/CMakeLists.txt | 23 +++++++++++++----------
 src/test/cpp/benchmark/benchmark.cpp  |  4 ++--
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/src/test/cpp/benchmark/CMakeLists.txt 
b/src/test/cpp/benchmark/CMakeLists.txt
index 9acae364..6653d110 100644
--- a/src/test/cpp/benchmark/CMakeLists.txt
+++ b/src/test/cpp/benchmark/CMakeLists.txt
@@ -20,12 +20,17 @@ option(BUILD_BENCHMARK_CHECKS "Build google benchmark 
checks"  OFF)
 if( NOT BUILD_BENCHMARK_CHECKS )
        return()
 endif()
+
 find_package(benchmark REQUIRED)
-find_package(fmt QUIET)
-if(fmt_FOUND)
-    set(LOG4CXX_HAS_FMT 1)
-else()
-    set(LOG4CXX_HAS_FMT 0)
+set(BENCHMARK_TARGETS benchmark::benchmark benchmark::benchmark_main)
+
+set(LOG4CXX_HAS_FMT 0)
+if(NOT LOG4CXX_USE_STANDARD_FORMAT)
+    find_package(fmt QUIET)
+    if(fmt_FOUND)
+        set(LOG4CXX_HAS_FMT 1)
+        list(APPEND BENCHMARK_TARGETS fmt::fmt)
+    endif()
 endif()
 add_executable(benchmark benchmark.cpp)
 
@@ -40,12 +45,10 @@ add_executable(benchmark benchmark.cpp)
 if( WIN32 )
   get_filename_component(APR_DLL_DIR "${APR_DLL}" DIRECTORY)
   get_filename_component(APR_UTIL_DLL_DIR "${APR_UTIL_DLL}" DIRECTORY)
-  get_filename_component(EXPAT_LIB_DIR "${EXPAT_LIBRARY}" DIRECTORY)
-
 
   set(EXPAT_DLL_DIR "${EXPAT_LIB_DIR}/../bin")
   set(LOG4CXX_DLL_DIR "$<SHELL_PATH:$<TARGET_FILE_DIR:log4cxx>>;")
-  set(PATH_FOR_TESTS 
${CMAKE_PROGRAM_PATH};${APR_DLL_DIR};${APR_UTIL_DLL_DIR};${LOG4CXX_DLL_DIR};${EXPAT_DLL_DIR}\;)
+  set(PATH_FOR_TESTS 
${CMAKE_PROGRAM_PATH};${APR_DLL_DIR};${APR_UTIL_DLL_DIR};${LOG4CXX_DLL_DIR}\;)
   list(REMOVE_DUPLICATES PATH_FOR_TESTS)
   set(NORMAL_PATH $ENV{PATH})
   set(ESCAPED_PATH "")
@@ -60,5 +63,5 @@ add_custom_target(run-benchmarks COMMAND benchmark DEPENDS 
benchmark)
 endif( WIN32 )
 
 target_compile_definitions(benchmark PRIVATE 
"LOG4CXX_HAS_FMT=${LOG4CXX_HAS_FMT}" ${LOG4CXX_COMPILE_DEFINITIONS} 
${APR_COMPILE_DEFINITIONS} ${APR_UTIL_COMPILE_DEFINITIONS} )
-target_include_directories(benchmark PRIVATE ${CMAKE_CURRENT_LIST_DIR} 
$<TARGET_PROPERTY:log4cxx,INCLUDE_DIRECTORIES>)
-target_link_libraries(benchmark PRIVATE log4cxx ${APR_LIBRARIES} 
${APR_SYSTEM_LIBS} Threads::Threads fmt::fmt benchmark::benchmark 
benchmark::benchmark_main)
+target_include_directories(benchmark PRIVATE 
$<TARGET_PROPERTY:log4cxx,INCLUDE_DIRECTORIES>)
+target_link_libraries(benchmark PRIVATE log4cxx ${APR_LIBRARIES} 
${APR_SYSTEM_LIBS} Threads::Threads ${BENCHMARK_TARGETS})
diff --git a/src/test/cpp/benchmark/benchmark.cpp 
b/src/test/cpp/benchmark/benchmark.cpp
index 3c5a28d0..132c5ea6 100644
--- a/src/test/cpp/benchmark/benchmark.cpp
+++ b/src/test/cpp/benchmark/benchmark.cpp
@@ -6,7 +6,7 @@
 #include <log4cxx/asyncappender.h>
 #if LOG4CXX_USING_STD_FORMAT
 #include <format>
-#else
+#elif LOG4CXX_HAS_FMT
 #include <fmt/format.h>
 #endif
 #include <benchmark/benchmark.h>
@@ -135,7 +135,7 @@ BENCHMARK_DEFINE_F(benchmarker, 
logStaticString)(benchmark::State& state)
 }
 BENCHMARK_REGISTER_F(benchmarker, logStaticString)->Name("Logging static 
string");
 
-#if LOG4CXX_HAS_FMT
+#if LOG4CXX_USING_STD_FORMAT || LOG4CXX_HAS_FMT
 BENCHMARK_DEFINE_F(benchmarker, logStaticStringFMT)(benchmark::State& state)
 {
        for (auto _ : state)

Reply via email to