mirror of
https://github.com/gabime/spdlog.git
synced 2024-12-25 10:01:33 +08:00
bench
This commit is contained in:
parent
2d075bcfda
commit
bf303fad19
@ -22,8 +22,7 @@ using namespace utils;
|
|||||||
|
|
||||||
void bench(int howmany, std::shared_ptr<spdlog::logger> log)
|
void bench(int howmany, std::shared_ptr<spdlog::logger> log)
|
||||||
{
|
{
|
||||||
cout << log->name() << ", " << format(howmany) << " iterations.." << endl;
|
cout << log->name() << "...\t\t" << flush;
|
||||||
|
|
||||||
auto start = system_clock::now();
|
auto start = system_clock::now();
|
||||||
for (auto i = 0; i < howmany; ++i)
|
for (auto i = 0; i < howmany; ++i)
|
||||||
{
|
{
|
||||||
@ -32,15 +31,14 @@ void bench(int howmany, std::shared_ptr<spdlog::logger> log)
|
|||||||
|
|
||||||
auto delta = system_clock::now() - start;
|
auto delta = system_clock::now() - start;
|
||||||
auto delta_d = duration_cast<duration<double>> (delta).count();
|
auto delta_d = duration_cast<duration<double>> (delta).count();
|
||||||
cout << "Delta:" << format(delta_d) << " seconds" << endl;
|
cout << format(int(howmany / delta_d)) << "/sec" << endl;
|
||||||
cout << "Rate:" << format(howmany / delta_d) << "/sec" << endl << endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void bench_mt(int howmany, std::shared_ptr<spdlog::logger> log, int thread_count)
|
void bench_mt(int howmany, std::shared_ptr<spdlog::logger> log, int thread_count)
|
||||||
{
|
{
|
||||||
|
|
||||||
cout << log->name() << ", " << format(howmany) << " iterations.." << endl;
|
cout << log->name() << "...\t\t" << flush;
|
||||||
std::atomic<int > msg_counter{0};
|
std::atomic<int > msg_counter{0};
|
||||||
vector<thread> threads;
|
vector<thread> threads;
|
||||||
auto start = system_clock::now();
|
auto start = system_clock::now();
|
||||||
@ -60,8 +58,7 @@ void bench_mt(int howmany, std::shared_ptr<spdlog::logger> log, int thread_count
|
|||||||
|
|
||||||
auto delta = system_clock::now() - start;
|
auto delta = system_clock::now() - start;
|
||||||
auto delta_d = duration_cast<duration<double>> (delta).count();
|
auto delta_d = duration_cast<duration<double>> (delta).count();
|
||||||
cout << "Delta:" << format(delta_d) << " seconds" << endl;
|
cout << format(int(howmany / delta_d)) << "/sec" << endl;
|
||||||
cout << "Rate:" << format(howmany / delta_d) << "/sec" << endl << endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -71,13 +68,13 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
int howmany = argc <= 1 ? 100000 : atoi(argv[1]);
|
int howmany = argc <= 1 ? 250000 : atoi(argv[1]);
|
||||||
int threads = argc <= 2 ? 4 : atoi(argv[2]);
|
int threads = argc <= 2 ? 4 : atoi(argv[2]);
|
||||||
int flush_interval = 100;
|
int flush_interval = 100;
|
||||||
|
|
||||||
|
|
||||||
cout << "*******************************************************************************\n";
|
cout << "*******************************************************************************\n";
|
||||||
cout << "Single threaded benchmarks. flush_interval = " << flush_interval << endl;
|
cout << "Single thread, " << format(howmany) << " iterations, flush every " << flush_interval << " lines"<< endl;
|
||||||
cout << "*******************************************************************************\n";
|
cout << "*******************************************************************************\n";
|
||||||
|
|
||||||
auto rotating_st = spdlog::rotating_logger_st("rotating_st", "logs/rotating_st", 1024 * 1024 * 5, 5, flush_interval);
|
auto rotating_st = spdlog::rotating_logger_st("rotating_st", "logs/rotating_st", 1024 * 1024 * 5, 5, flush_interval);
|
||||||
@ -88,8 +85,8 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
bench(howmany, spdlog::create<null_sink_st>("null_st"));
|
bench(howmany, spdlog::create<null_sink_st>("null_st"));
|
||||||
|
|
||||||
cout << "*******************************************************************************\n";
|
cout << "\n*******************************************************************************\n";
|
||||||
cout << "Multi threaded benchmarks (" << threads << " threads), flush_interval = " << flush_interval << endl;
|
cout << threads << " threads, " << format(howmany) << " iterations, flush every " << flush_interval << " lines" << endl;
|
||||||
cout << "*******************************************************************************\n";
|
cout << "*******************************************************************************\n";
|
||||||
|
|
||||||
auto rotating_mt = spdlog::rotating_logger_mt("rotating_mt", "logs/rotating_mt", 1024 * 1024 * 5, 5, flush_interval);
|
auto rotating_mt = spdlog::rotating_logger_mt("rotating_mt", "logs/rotating_mt", 1024 * 1024 * 5, 5, flush_interval);
|
||||||
|
Loading…
Reference in New Issue
Block a user