1*5c90c05cSAndroid Build Coastguard Worker // A quick and dirty performance test. 2*5c90c05cSAndroid Build Coastguard Worker // For actual benchmarks see https://github.com/fmtlib/format-benchmark. 3*5c90c05cSAndroid Build Coastguard Worker 4*5c90c05cSAndroid Build Coastguard Worker #include <atomic> 5*5c90c05cSAndroid Build Coastguard Worker #include <chrono> 6*5c90c05cSAndroid Build Coastguard Worker #include <iterator> 7*5c90c05cSAndroid Build Coastguard Worker 8*5c90c05cSAndroid Build Coastguard Worker #include "fmt/format.h" 9*5c90c05cSAndroid Build Coastguard Worker main()10*5c90c05cSAndroid Build Coastguard Workerint main() { 11*5c90c05cSAndroid Build Coastguard Worker const int n = 10000000; 12*5c90c05cSAndroid Build Coastguard Worker 13*5c90c05cSAndroid Build Coastguard Worker auto start = std::chrono::steady_clock::now(); 14*5c90c05cSAndroid Build Coastguard Worker for (int iteration = 0; iteration < n; ++iteration) { 15*5c90c05cSAndroid Build Coastguard Worker auto buf = fmt::memory_buffer(); 16*5c90c05cSAndroid Build Coastguard Worker fmt::format_to(std::back_inserter(buf), 17*5c90c05cSAndroid Build Coastguard Worker "Hello, {}. The answer is {} and {}.", 1, 2345, 6789); 18*5c90c05cSAndroid Build Coastguard Worker } 19*5c90c05cSAndroid Build Coastguard Worker std::atomic_signal_fence(std::memory_order_acq_rel); // Clobber memory. 20*5c90c05cSAndroid Build Coastguard Worker auto end = std::chrono::steady_clock::now(); 21*5c90c05cSAndroid Build Coastguard Worker 22*5c90c05cSAndroid Build Coastguard Worker // Print time in milliseconds. 23*5c90c05cSAndroid Build Coastguard Worker std::chrono::duration<double> duration = end - start; 24*5c90c05cSAndroid Build Coastguard Worker fmt::print("{:.1f}\n", duration.count() * 1000); 25*5c90c05cSAndroid Build Coastguard Worker } 26