void stdout_printer::benchmark_result(const benchmark& info, const tables::table& results) { tables::table output = results; if (info.has_configurations()) { const auto& c = info.get_current_configuration(); for (const auto& v : c) { output.add_const_column(v.first, v.second); } } m_tables.insert(m_tables.end(), output); }
void benchmark_result(const benchmark &info, const tables::table &results) { std::vector<uint64_t> iterations = results.values_as<uint64_t>("iterations"); statistics iter = calculate_statistics( iterations.cbegin(), iterations.cend()); // Describe the beginning of the run. std::cout << std::fixed << console::textgreen << "[ RUN ]" << console::textdefault << " " << info.testcase_name() << "." << info.benchmark_name() << " (" << results.rows() << (results.rows() == 1 ? " run " : " runs ") << "/ " << iter.m_mean << " " << (iter.m_mean == 1 ? "iteration" : "iterations") << ")" << std::endl; if(info.has_configurations()) { std::cout << console::textyellow << "[ CONFIG ]" << console::textdefault << " "; const auto& c = info.get_current_configuration(); bool first = true; tables::format f; for(const auto& v : c) { if(!first) std::cout << ","; first = false; std::cout << v.first << "="; f.print(std::cout, v.second); } std::cout << std::endl; } double time = static_cast<double>( boost::chrono::duration_cast<boost::chrono::microseconds>( m_benchmark_stop-m_benchmark_start).count()); std::cout << std::fixed << console::textyellow << "[ TIME ]" << console::textdefault << " " << (time / 1000) << " milliseconds" << std::endl; for(const auto& c_name : results.columns()) { if(c_name == "iterations") continue; if(c_name == "run_number") continue; if(print_column<double>(c_name,info.unit_text(),results)) continue; if(print_column<float>(c_name,info.unit_text(),results)) continue; if(print_column<uint64_t>(c_name,info.unit_text(),results)) continue; if(print_column<int64_t>(c_name,info.unit_text(),results)) continue; if(print_column<int32_t>(c_name,info.unit_text(),results)) continue; if(print_column<uint32_t>(c_name,info.unit_text(),results)) continue; if(print_column<int16_t>(c_name,info.unit_text(),results)) continue; if(print_column<uint16_t>(c_name,info.unit_text(),results)) continue; if(print_column<int8_t>(c_name,info.unit_text(),results)) continue; if(print_column<uint8_t>(c_name,info.unit_text(),results)) continue; } std::cout << console::textgreen << "[----------] " << console::textdefault << std::endl; }