aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/fmt/test/perf-sanity.cc
blob: aa0c0caefe2862db6b54924e43e9cb5a23d08e0c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// A quick and dirty performance test.
// For actual benchmarks see https://github.com/fmtlib/format-benchmark.

#include <atomic>
#include <chrono>
#include <iterator>

#include "fmt/format.h"

int main() {
  const int n = 10000000;

  auto start = std::chrono::steady_clock::now();
  for (int iteration = 0; iteration < n; ++iteration) {
    auto buf = fmt::memory_buffer();
    fmt::format_to(std::back_inserter(buf),
                   "Hello, {}. The answer is {} and {}.", 1, 2345, 6789);
  }
  std::atomic_signal_fence(std::memory_order_acq_rel);  // Clobber memory.
  auto end = std::chrono::steady_clock::now();

  // Print time in milliseconds.
  std::chrono::duration<double> duration = end - start;
  fmt::print("{:.1f}\n", duration.count() * 1000);
}