From c365ac392b3b4edf1cb232407111902146249404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Sat, 15 Jun 2019 12:50:36 +0200 Subject: [PATCH] Standardize and document the parallel processing toggle --- docs/configuration.md | 1 + include/internal/benchmark/detail/catch_stats.cpp | 4 ++-- include/internal/catch_compiler_capabilities.h | 6 +++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index cfe4b9a0..419af2d8 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -150,6 +150,7 @@ by using `_NO_` in the macro, e.g. `CATCH_CONFIG_NO_CPP17_UNCAUGHT_EXCEPTIONS`. CATCH_CONFIG_WCHAR // Enables use of wchart_t CATCH_CONFIG_EXPERIMENTAL_REDIRECT // Enables the new (experimental) way of capturing stdout/stderr CATCH_CONFIG_ENABLE_BENCHMARKING // Enables the integrated benchmarking features (has a significant effect on compilation speed) + CATCH_CONFIG_USE_ASYNC // Force parallel statistical processing of samples during benchmarking Currently Catch enables `CATCH_CONFIG_WINDOWS_SEH` only when compiled with MSVC, because some versions of MinGW do not have the necessary Win32 API support. diff --git a/include/internal/benchmark/detail/catch_stats.cpp b/include/internal/benchmark/detail/catch_stats.cpp index dd0b8ea2..40e0ea98 100644 --- a/include/internal/benchmark/detail/catch_stats.cpp +++ b/include/internal/benchmark/detail/catch_stats.cpp @@ -18,7 +18,7 @@ #include -#if defined(CATCH_USE_ASYNC) +#if defined(CATCH_CONFIG_USE_ASYNC) #include #endif @@ -185,7 +185,7 @@ namespace Catch { auto mean = &Detail::mean::iterator>; auto stddev = &standard_deviation; -#ifdef CATCH_USE_ASYNC +#if defined(CATCH_CONFIG_USE_ASYNC) auto Estimate = [=](double(*f)(std::vector::iterator, std::vector::iterator)) { auto seed = entropy(); return std::async(std::launch::async, [=] { diff --git a/include/internal/catch_compiler_capabilities.h b/include/internal/catch_compiler_capabilities.h index 018aefba..b094c68b 100644 --- a/include/internal/catch_compiler_capabilities.h +++ b/include/internal/catch_compiler_capabilities.h @@ -152,7 +152,7 @@ #if defined(_REENTRANT) || defined(_MSC_VER) // Enable async processing, as -pthread is specified or no additional linking is required -# define CATCH_USE_ASYNC +# define CATCH_INTERNAL_CONFIG_USE_ASYNC #endif // _MSC_VER //////////////////////////////////////////////////////////////////////////////// @@ -272,6 +272,10 @@ # define CATCH_CONFIG_POLYFILL_ISNAN #endif +#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC) +# define CATCH_CONFIG_USE_ASYNC +#endif + #if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) # define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS # define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS