15#ifdef SPDLOG_FMT_EXTERNAL
16# include <fmt/locale.h>
40 spdlog::info(
"**************************************************************");
41 spdlog::info(fmt::format(
std::locale(
"en_US.UTF-8"),
"Multi threaded: {:L} threads, {:L} messages", threads, iters));
42 spdlog::info(
"**************************************************************");
45 bench_mt(iters, std::move(basic_mt), threads);
47 basic_mt_tracing->enable_backtrace(32);
48 bench_mt(iters, std::move(basic_mt_tracing), threads);
52 bench_mt(iters, std::move(rotating_mt), threads);
54 rotating_mt_tracing->enable_backtrace(32);
55 bench_mt(iters, std::move(rotating_mt_tracing), threads);
59 bench_mt(iters, std::move(daily_mt), threads);
61 daily_mt_tracing->enable_backtrace(32);
62 bench_mt(iters, std::move(daily_mt_tracing), threads);
67 bench(iters, empty_logger);
70 empty_logger_tracing->enable_backtrace(32);
71 bench(iters, empty_logger_tracing);
76 spdlog::info(
"**************************************************************");
78 spdlog::info(
"**************************************************************");
81 bench(iters, std::move(basic_st));
84 bench(iters, std::move(basic_st_tracing));
88 bench(iters, std::move(rotating_st));
90 rotating_st_tracing->enable_backtrace(32);
91 bench(iters, std::move(rotating_st_tracing));
95 bench(iters, std::move(daily_st));
97 daily_st_tracing->enable_backtrace(32);
98 bench(iters, std::move(daily_st_tracing));
103 bench(iters, empty_logger);
107 empty_logger_tracing->enable_backtrace(32);
108 bench(iters, empty_logger_tracing);
111int main(
int argc,
char *argv[])
152 auto start = high_resolution_clock::now();
153 for (
auto i = 0; i < howmany; ++i)
155 log->info(
"Hello logger: msg number {}", i);
158 auto delta = high_resolution_clock::now() - start;
159 auto delta_d = duration_cast<duration<double>>(delta).
count();
162 fmt::format(
std::locale(
"en_US.UTF-8"),
"{:<30} Elapsed: {:0.2f} secs {:>16L}/sec", log->name(), delta_d,
int(howmany / delta_d)));
174 auto start = high_resolution_clock::now();
175 for (
size_t t = 0; t < thread_count; ++t)
178 for (
int j = 0; j < howmany /
static_cast<int>(thread_count); j++)
180 log->info(
"Hello logger: msg number {}", j);
185 for (
auto &t : threads)
190 auto delta = high_resolution_clock::now() - start;
191 auto delta_d = duration_cast<duration<double>>(delta).
count();
193 fmt::format(
std::locale(
"en_US.UTF-8"),
"{:<30} Elapsed: {:0.2f} secs {:>16L}/sec", log->name(), delta_d,
int(howmany / delta_d)));
int main(int argc, char *argv[])
static const size_t rotating_files
static const size_t file_size
void bench_threaded_logging(size_t threads, int iters)
void bench_single_threaded(int iters)
void bench_mt(int howmany, std::shared_ptr< spdlog::logger > log, size_t thread_count)
void bench(int howmany, std::shared_ptr< spdlog::logger > log)
static const int max_threads
constexpr auto count() -> size_t
T duration_cast(T... args)
T emplace_back(T... args)
std::shared_ptr< logger > rotating_logger_st(const std::string &logger_name, const filename_t &filename, size_t max_file_size, size_t max_files, bool rotate_on_open=false)
void error(fmt::format_string< Args... > fmt, Args &&...args)
std::shared_ptr< logger > daily_logger_st(const std::string &logger_name, const filename_t &filename, int hour=0, int minute=0, bool truncate=false, uint16_t max_files=0)
SPDLOG_INLINE void set_automatic_registration(bool automatic_registration)
std::shared_ptr< logger > basic_logger_st(const std::string &logger_name, const filename_t &filename, bool truncate=false)
SPDLOG_INLINE std::shared_ptr< spdlog::logger > default_logger()
void info(fmt::format_string< Args... > fmt, Args &&...args)
std::shared_ptr< logger > basic_logger_mt(const std::string &logger_name, const filename_t &filename, bool truncate=false)
SPDLOG_INLINE void drop(const std::string &name)
std::shared_ptr< logger > rotating_logger_mt(const std::string &logger_name, const filename_t &filename, size_t max_file_size, size_t max_files, bool rotate_on_open=false)
std::shared_ptr< logger > daily_logger_mt(const std::string &logger_name, const filename_t &filename, int hour=0, int minute=0, bool truncate=false, uint16_t max_files=0)