added g3log crush example
This commit is contained in:
		@@ -1,9 +1,9 @@
 | 
				
			|||||||
CXX	?= g++
 | 
					CXX	?= g++
 | 
				
			||||||
CXXFLAGS	= -march=native -Wall -std=c++11 -pthread 
 | 
					CXXFLAGS	= -march=native -Wall -std=c++11 -pthread 
 | 
				
			||||||
CXX_RELEASE_FLAGS = -Ofast -DNDEBUG
 | 
					CXX_RELEASE_FLAGS = -O2 -DNDEBUG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
binaries=spdlog-latency g3log-latency
 | 
					binaries=spdlog-latency g3log-latency g3log-crush
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all: $(binaries)
 | 
					all: $(binaries)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -16,6 +16,10 @@ g3log-latency: g3log-latency.cpp
 | 
				
			|||||||
	$(CXX) g3log-latency.cpp -o g3log-latency $(CXXFLAGS) $(CXX_RELEASE_FLAGS) -I../../../g3log/src -L. -lg3logger 
 | 
						$(CXX) g3log-latency.cpp -o g3log-latency $(CXXFLAGS) $(CXX_RELEASE_FLAGS) -I../../../g3log/src -L. -lg3logger 
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
					g3log-crush: g3log-crush.cpp
 | 
				
			||||||
 | 
						$(CXX) g3log-crush.cpp -o g3log-crush $(CXXFLAGS) $(CXX_RELEASE_FLAGS) -I../../../g3log/src -L. -lg3logger 
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						
 | 
				
			||||||
.PHONY: clean
 | 
					.PHONY: clean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										37
									
								
								bench/latency/g3log-crush.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								bench/latency/g3log-crush.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <g3log/g3log.hpp>
 | 
				
			||||||
 | 
					#include <g3log/logworker.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CrusherLoop()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t counter = 0;
 | 
				
			||||||
 | 
					    while (true)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        LOGF(INFO, "Some text to crush you machine. thread:");        
 | 
				
			||||||
 | 
					        if(++counter % 1000000 == 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            std::cout << "Wrote " << counter << " entries" << std::endl;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(int argc, char** argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    std::cout << "WARNING: This test will exaust all your machine memory and will crush it!" << std::endl;
 | 
				
			||||||
 | 
					    std::cout << "Are you sure you want to continue ? " << std::endl;
 | 
				
			||||||
 | 
					    char c;
 | 
				
			||||||
 | 
					    std::cin >> c;
 | 
				
			||||||
 | 
					    if (toupper( c ) != 'Y')
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						auto worker = g3::LogWorker::createLogWorker();
 | 
				
			||||||
 | 
					    auto handle= worker->addDefaultLogger(argv[0], "g3log.txt");
 | 
				
			||||||
 | 
					    g3::initializeLogging(worker.get());		
 | 
				
			||||||
 | 
						CrusherLoop();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1,17 +1,3 @@
 | 
				
			|||||||
//// to compile:   c++ bench.cpp -o bench -Wall -Wshadow -Wextra -pedantic -std=c++11 -pthread -I../include -O3 -fPIC -Ofast -m64 -march=native
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Alternative:   c++ bench.cpp -o bench -Wall -Wshadow -Wextra -pedantic -std=c++11 -pthread -I../include -O3  -march=native
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// the test code itself is Public domain @ref: Unlicense.org
 | 
					 | 
				
			||||||
// made by KjellKod, 2015, first published for testing of g3log at github.com/kjellkod/g3log
 | 
					 | 
				
			||||||
// Feel free to share, modify etc with no obligations but also with no guarantees from my part either
 | 
					 | 
				
			||||||
// enjoy - Kjell Hedstrom (aka KjellKod)
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// spdlog follows however another license. See the bottow of this file
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <thread>
 | 
					#include <thread>
 | 
				
			||||||
#include <vector>
 | 
					#include <vector>
 | 
				
			||||||
#include <atomic>
 | 
					#include <atomic>
 | 
				
			||||||
@@ -52,7 +38,7 @@ void MeasurePeakDuringLogWrites(const size_t id, std::vector<uint64_t>& result)
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        auto start_time = std::chrono::high_resolution_clock::now();
 | 
					        auto start_time = std::chrono::high_resolution_clock::now();
 | 
				
			||||||
		LOGF(INFO, "Some text to log for thread: %ld", id);        
 | 
					        LOGF(INFO, "Some text to log for thread: %ld", id);
 | 
				
			||||||
        auto stop_time = std::chrono::high_resolution_clock::now();
 | 
					        auto stop_time = std::chrono::high_resolution_clock::now();
 | 
				
			||||||
        uint64_t time_us = std::chrono::duration_cast<std::chrono::microseconds>(stop_time - start_time).count();
 | 
					        uint64_t time_us = std::chrono::duration_cast<std::chrono::microseconds>(stop_time - start_time).count();
 | 
				
			||||||
        result.push_back(time_us);
 | 
					        result.push_back(time_us);
 | 
				
			||||||
@@ -120,7 +106,7 @@ int main(int argc, char** argv)
 | 
				
			|||||||
    const std::string  g_prefix_log_name = "g3log-performance-";
 | 
					    const std::string  g_prefix_log_name = "g3log-performance-";
 | 
				
			||||||
    const std::string  g_measurement_dump = g_path + g_prefix_log_name + "_RESULT.txt";
 | 
					    const std::string  g_measurement_dump = g_path + g_prefix_log_name + "_RESULT.txt";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	auto worker = g3::LogWorker::createLogWorker();
 | 
					    auto worker = g3::LogWorker::createLogWorker();
 | 
				
			||||||
    auto handle= worker->addDefaultLogger(argv[0], "g3log.txt");
 | 
					    auto handle= worker->addDefaultLogger(argv[0], "g3log.txt");
 | 
				
			||||||
    g3::initializeLogging(worker.get());
 | 
					    g3::initializeLogging(worker.get());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,3 @@
 | 
				
			|||||||
//// to compile:   c++ bench.cpp -o bench -Wall -Wshadow -Wextra -pedantic -std=c++11 -pthread -I../include -O3 -fPIC -Ofast -m64 -march=native
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Alternative:   c++ bench.cpp -o bench -Wall -Wshadow -Wextra -pedantic -std=c++11 -pthread -I../include -O3  -march=native
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// the test code itself is Public domain @ref: Unlicense.org
 | 
					 | 
				
			||||||
// made by KjellKod, 2015, first published for testing of g3log at github.com/kjellkod/g3log
 | 
					 | 
				
			||||||
// Feel free to share, modify etc with no obligations but also with no guarantees from my part either
 | 
					 | 
				
			||||||
// enjoy - Kjell Hedstrom (aka KjellKod)
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// spdlog follows however another license. See the bottow of this file
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <thread>
 | 
					#include <thread>
 | 
				
			||||||
#include <vector>
 | 
					#include <vector>
 | 
				
			||||||
@@ -40,7 +27,7 @@ std::atomic<size_t> g_counter = {0};
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void MeasurePeakDuringLogWrites(const size_t id, std::vector<uint64_t>& result)
 | 
					void MeasurePeakDuringLogWrites(const size_t id, std::vector<uint64_t>& result)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	auto logger = spd::get("file_logger");
 | 
					    auto logger = spd::get("file_logger");
 | 
				
			||||||
    while (true)
 | 
					    while (true)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        const size_t value_now = ++g_counter;
 | 
					        const size_t value_now = ++g_counter;
 | 
				
			||||||
@@ -117,9 +104,9 @@ int main(int argc, char** argv)
 | 
				
			|||||||
    spdlog::set_async_mode(queue_size);
 | 
					    spdlog::set_async_mode(queue_size);
 | 
				
			||||||
    auto logger = spdlog::create<spd::sinks::simple_file_sink_mt>("file_logger", "spdlog.log", true);
 | 
					    auto logger = spdlog::create<spd::sinks::simple_file_sink_mt>("file_logger", "spdlog.log", true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//force flush on every call to compare with g3log
 | 
					    //force flush on every call to compare with g3log
 | 
				
			||||||
	auto s = (spd::sinks::simple_file_sink_mt*)logger->sinks()[0].get();
 | 
					    auto s = (spd::sinks::simple_file_sink_mt*)logger->sinks()[0].get();
 | 
				
			||||||
	s->set_force_flush(true);
 | 
					    s->set_force_flush(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    auto start_time_application_total = std::chrono::high_resolution_clock::now();
 | 
					    auto start_time_application_total = std::chrono::high_resolution_clock::now();
 | 
				
			||||||
    for (uint64_t idx = 0; idx < number_of_threads; ++idx)
 | 
					    for (uint64_t idx = 0; idx < number_of_threads; ++idx)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user