mirror of
https://github.com/gabime/spdlog.git
synced 2024-12-25 10:01:33 +08:00
added g3log crush example
This commit is contained in:
parent
6ce507eceb
commit
703a1d9736
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user