Added formatter becnhmarks
This commit is contained in:
		
							parent
							
								
									7ce8ae72e8
								
							
						
					
					
						commit
						11d83515dd
					
				| @ -42,8 +42,8 @@ set(CMAKE_CXX_STANDARD_LIBRARIES -lbenchmark) | |||||||
| target_link_libraries(latency spdlog::spdlog Threads::Threads) | target_link_libraries(latency spdlog::spdlog Threads::Threads) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| add_executable(padder_bench padder_bench.cpp) | add_executable(formatter-bench formatter-bench.cpp) | ||||||
| set(CMAKE_CXX_STANDARD_LIBRARIES -lbenchmark) | set(CMAKE_CXX_STANDARD_LIBRARIES -lbenchmark) | ||||||
| target_link_libraries(padder_bench spdlog::spdlog Threads::Threads) | target_link_libraries(formatter-bench spdlog::spdlog Threads::Threads) | ||||||
| 
 | 
 | ||||||
| file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs") | file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/logs") | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ CXXFLAGS	= -march=native -Wall -Wextra -pedantic -Wconversion -std=c++11 -pthrea | |||||||
| CXX_RELEASE_FLAGS = -O3 -flto -Wl,--no-as-needed | CXX_RELEASE_FLAGS = -O3 -flto -Wl,--no-as-needed | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| binaries=bench.cpp async_bench latency padder_bench | binaries=bench async_bench latency formatter-bench | ||||||
| 
 | 
 | ||||||
| all: $(binaries) | all: $(binaries) | ||||||
| 
 | 
 | ||||||
| @ -19,8 +19,8 @@ latency: latency.cpp | |||||||
| 	$(CXX) latency.cpp -o latency $(CXXFLAGS) $(CXX_RELEASE_FLAGS) -lbenchmark | 	$(CXX) latency.cpp -o latency $(CXXFLAGS) $(CXX_RELEASE_FLAGS) -lbenchmark | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| padder_bench: padder_bench.cpp | formatter-bench: formatter-bench.cpp | ||||||
| 	$(CXX) padder_bench.cpp -o padder_bench $(CXXFLAGS) $(CXX_RELEASE_FLAGS) -lbenchmark | 	$(CXX) formatter-bench.cpp -o formatter-bench $(CXXFLAGS) $(CXX_RELEASE_FLAGS) -lbenchmark | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .PHONY: clean | .PHONY: clean | ||||||
|  | |||||||
| @ -16,16 +16,57 @@ void bench_scoped_pad(benchmark::State &state, size_t wrapped_size, spdlog::deta | |||||||
|         { |         { | ||||||
|             spdlog::details::scoped_pad p(wrapped_size, padinfo, dest); |             spdlog::details::scoped_pad p(wrapped_size, padinfo, dest); | ||||||
|             benchmark::DoNotOptimize(p); |             benchmark::DoNotOptimize(p); | ||||||
|  |             dest.clear(); | ||||||
|         } |         } | ||||||
|         //        if(dest.size() != (padinfo.width_-wrapped_size))
 |  | ||||||
|         //        {
 |  | ||||||
|         //            printf("NOT GOOD wrapped_size=%zu\t padinfo.width= %zu\tdest = %zu\n", wrapped_size, padinfo.width_, dest.size());
 |  | ||||||
|         //        }
 |  | ||||||
|         dest.clear(); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int main(int argc, char *argv[]) | 
 | ||||||
|  | void bench_formatter(benchmark::State &state, std::string pattern) | ||||||
|  | { | ||||||
|  |     auto formatter = spdlog::details::make_unique<spdlog::pattern_formatter>(pattern); | ||||||
|  |     fmt::memory_buffer dest; | ||||||
|  |     std::string logger_name = "logger-name"; | ||||||
|  |     const char* text = "Hello. This is some message with length of 80                                   "; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     spdlog::details::log_msg msg(&logger_name, spdlog::level::info, text); | ||||||
|  | //    formatter->format(msg, dest);
 | ||||||
|  | //    printf("%s\n", fmt::to_string(dest).c_str());
 | ||||||
|  | 
 | ||||||
|  |     for (auto _ : state) | ||||||
|  |     { | ||||||
|  |         dest.clear(); | ||||||
|  |         formatter->format(msg, dest); | ||||||
|  |         benchmark::DoNotOptimize(dest); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void bench_formatters() | ||||||
|  | { | ||||||
|  |     // basic patterns(single flag)
 | ||||||
|  |     std::string all_flags = "+vtPnlLaAbBcCYDmdHIMSefFprRTXzEi%"; | ||||||
|  |     std::vector<std::string> basic_patterns; | ||||||
|  |     for(auto &flag:all_flags) | ||||||
|  |     { | ||||||
|  |         auto pattern = std::string("%") + flag; | ||||||
|  |         benchmark::RegisterBenchmark(pattern.c_str(), bench_formatter, pattern); | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // complex patterns
 | ||||||
|  |     std::vector<std::string> patterns = { | ||||||
|  |             "[%D %X] [%l] [%n] %v", | ||||||
|  |             "[%Y-%m-%d %H:%M:%S.%e] [%l] [%n] %v", | ||||||
|  |             "[%Y-%m-%d %H:%M:%S.%e] [%l] [%n] [%t] %v", | ||||||
|  |     }; | ||||||
|  |     for(auto &pattern:patterns) | ||||||
|  |     { | ||||||
|  |         benchmark::RegisterBenchmark(pattern.c_str(), bench_formatter, pattern); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void bench_padders() | ||||||
| { | { | ||||||
|     using spdlog::details::padding_info; |     using spdlog::details::padding_info; | ||||||
|     std::vector<size_t> sizes = {0, 2, 4, 8, 16, 32, 64, 128}; |     std::vector<size_t> sizes = {0, 2, 4, 8, 16, 32, 64, 128}; | ||||||
| @ -45,7 +86,15 @@ int main(int argc, char *argv[]) | |||||||
|         title = "scoped_pad::center::" + std::to_string(size); |         title = "scoped_pad::center::" + std::to_string(size); | ||||||
|         benchmark::RegisterBenchmark(title.c_str(), bench_scoped_pad, wrapped_size, padding_info(padding_size, padding_info::center)); |         benchmark::RegisterBenchmark(title.c_str(), bench_scoped_pad, wrapped_size, padding_info(padding_size, padding_info::center)); | ||||||
|     } |     } | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|  |     bench_formatters(); | ||||||
|  |     //bench_padders();
 | ||||||
|     benchmark::Initialize(&argc, argv); |     benchmark::Initialize(&argc, argv); | ||||||
|     benchmark::RunSpecifiedBenchmarks(); |     benchmark::RunSpecifiedBenchmarks(); | ||||||
| } | } | ||||||
|  | 
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user