mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Various improvements to the benchmarking support
* Units from <ratio> are no longer redeclared in our own namespace * The default clock is `steady_clock`, not `high_resolution_clock`, because, as HH says "high_resolution_clock is useless. If you want measure the passing of time, use steady_clock. If you want user friendly time, use system_clock". * Benchmarking support is opt-in, not opt-out, to avoid the large (~10%) compile time penalty. * Benchmarking-related options in CLI are always present, to decrease the amount of code that is only compiled conditionally and making the whole shebang more maintainble.
This commit is contained in:
		| @@ -20,10 +20,16 @@ | ||||
| #if defined(_MSC_VER) | ||||
| #pragma warning(push) | ||||
| #pragma warning(disable:4061) // Not all labels are EXPLICITLY handled in switch | ||||
|  // Note that 4062 (not all labels are handled | ||||
|  // and default is missing) is enabled | ||||
|  // Note that 4062 (not all labels are handled and default is missing) is enabled | ||||
| #endif | ||||
|  | ||||
| #if defined(__clang__) | ||||
| #  pragma clang diagnostic push | ||||
| // For simplicity, benchmarking-only helpers are always enabled | ||||
| #  pragma clang diagnostic ignored "-Wunused-function" | ||||
| #endif | ||||
|  | ||||
|  | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
| @@ -287,7 +293,7 @@ public: | ||||
|         if (!m_isOpen) { | ||||
|             m_isOpen = true; | ||||
|             *this << RowBreak(); | ||||
| 			 | ||||
|  | ||||
| 			Columns headerCols; | ||||
| 			Spacer spacer(2); | ||||
| 			for (auto const& info : m_columnInfos) { | ||||
| @@ -408,7 +414,7 @@ void ConsoleReporter::sectionEnded(SectionStats const& _sectionStats) { | ||||
|     StreamingReporterBase::sectionEnded(_sectionStats); | ||||
| } | ||||
|  | ||||
| #ifndef CATCH_CONFIG_DISABLE_BENCHMARKING  | ||||
| #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) | ||||
| void ConsoleReporter::benchmarkPreparing(std::string const& name) { | ||||
| 	lazyPrintWithoutClosingBenchmarkTable(); | ||||
|  | ||||
| @@ -446,7 +452,7 @@ void ConsoleReporter::benchmarkFailed(std::string const& error) { | ||||
|         << "Benchmark failed (" << error << ")" | ||||
|         << ColumnBreak() << RowBreak(); | ||||
| } | ||||
| #endif // CATCH_CONFIG_DISABLE_BENCHMARKING | ||||
| #endif // CATCH_CONFIG_ENABLE_BENCHMARKING | ||||
|  | ||||
| void ConsoleReporter::testCaseEnded(TestCaseStats const& _testCaseStats) { | ||||
|     m_tablePrinter->close(); | ||||
| @@ -665,3 +671,7 @@ CATCH_REGISTER_REPORTER("console", ConsoleReporter) | ||||
| #if defined(_MSC_VER) | ||||
| #pragma warning(pop) | ||||
| #endif | ||||
|  | ||||
| #if defined(__clang__) | ||||
| #  pragma clang diagnostic pop | ||||
| #endif | ||||
|   | ||||
| @@ -39,12 +39,12 @@ namespace Catch { | ||||
|         void sectionStarting(SectionInfo const& _sectionInfo) override; | ||||
|         void sectionEnded(SectionStats const& _sectionStats) override; | ||||
|  | ||||
| #ifndef CATCH_CONFIG_DISABLE_BENCHMARKING  | ||||
| #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) | ||||
|         void benchmarkPreparing(std::string const& name) override; | ||||
|         void benchmarkStarting(BenchmarkInfo const& info) override; | ||||
|         void benchmarkEnded(BenchmarkStats<> const& stats) override; | ||||
|         void benchmarkFailed(std::string const& error) override; | ||||
| #endif // CATCH_CONFIG_DISABLE_BENCHMARKING | ||||
| #endif // CATCH_CONFIG_ENABLE_BENCHMARKING | ||||
|  | ||||
|         void testCaseEnded(TestCaseStats const& _testCaseStats) override; | ||||
|         void testGroupEnded(TestGroupStats const& _testGroupStats) override; | ||||
|   | ||||
| @@ -42,7 +42,7 @@ namespace Catch { | ||||
|         m_reporter->noMatchingTestCases( spec ); | ||||
|     } | ||||
|  | ||||
| #ifndef CATCH_CONFIG_DISABLE_BENCHMARKING  | ||||
| #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) | ||||
|     void ListeningReporter::benchmarkPreparing( std::string const& name ) { | ||||
| 		for (auto const& listener : m_listeners) { | ||||
| 			listener->benchmarkPreparing(name); | ||||
| @@ -68,7 +68,7 @@ namespace Catch { | ||||
| 		} | ||||
| 		m_reporter->benchmarkFailed(error); | ||||
| 	} | ||||
| #endif // CATCH_CONFIG_DISABLE_BENCHMARKING | ||||
| #endif // CATCH_CONFIG_ENABLE_BENCHMARKING | ||||
|  | ||||
|     void ListeningReporter::testRunStarting( TestRunInfo const& testRunInfo ) { | ||||
|         for ( auto const& listener : m_listeners ) { | ||||
|   | ||||
| @@ -31,12 +31,12 @@ namespace Catch { | ||||
|  | ||||
|         static std::set<Verbosity> getSupportedVerbosities(); | ||||
|  | ||||
| #ifndef CATCH_CONFIG_DISABLE_BENCHMARKING  | ||||
| #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) | ||||
|         void benchmarkPreparing(std::string const& name) override; | ||||
|         void benchmarkStarting( BenchmarkInfo const& benchmarkInfo ) override; | ||||
|         void benchmarkEnded( BenchmarkStats<> const& benchmarkStats ) override; | ||||
|         void benchmarkFailed(std::string const&) override; | ||||
| #endif // CATCH_CONFIG_DISABLE_BENCHMARKING | ||||
| #endif // CATCH_CONFIG_ENABLE_BENCHMARKING | ||||
|  | ||||
|         void testRunStarting( TestRunInfo const& testRunInfo ) override; | ||||
|         void testGroupStarting( GroupInfo const& groupInfo ) override; | ||||
|   | ||||
| @@ -219,7 +219,7 @@ namespace Catch { | ||||
|         m_xml.endElement(); | ||||
|     } | ||||
|  | ||||
| #ifndef CATCH_CONFIG_DISABLE_BENCHMARKING  | ||||
| #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) | ||||
|     void XmlReporter::benchmarkStarting(BenchmarkInfo const &info) { | ||||
|         m_xml.startElement("BenchmarkResults") | ||||
|             .writeAttribute("name", info.name) | ||||
| @@ -259,7 +259,7 @@ namespace Catch { | ||||
|             writeAttribute("message", error); | ||||
|         m_xml.endElement(); | ||||
|     } | ||||
| #endif // CATCH_CONFIG_DISABLE_BENCHMARKING | ||||
| #endif // CATCH_CONFIG_ENABLE_BENCHMARKING | ||||
|  | ||||
|     CATCH_REGISTER_REPORTER( "xml", XmlReporter ) | ||||
|  | ||||
|   | ||||
| @@ -50,11 +50,11 @@ namespace Catch { | ||||
|  | ||||
|         void testRunEnded(TestRunStats const& testRunStats) override; | ||||
|  | ||||
| #ifndef CATCH_CONFIG_DISABLE_BENCHMARKING  | ||||
| #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING) | ||||
|         void benchmarkStarting(BenchmarkInfo const&) override; | ||||
|         void benchmarkEnded(BenchmarkStats<> const&) override; | ||||
|         void benchmarkFailed(std::string const&) override; | ||||
| #endif // CATCH_CONFIG_DISABLE_BENCHMARKING | ||||
| #endif // CATCH_CONFIG_ENABLE_BENCHMARKING | ||||
|  | ||||
|     private: | ||||
|         Timer m_testCaseTimer; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský