int main(int, char const *[]) { { std::vector<void (*)()> fs{test_count}; long long alloc_ns{0}; { timer _{alloc_ns}; for (size_t i = 0; i < test_count; ++i) fs[i] = &control; } std::cout << "control alloc: " << std::fixed << std::setw(5) << std::setprecision(1) << static_cast<double>(alloc_ns) / test_count << "ns" << std::endl; long long invoke_ns{0}; { timer _{invoke_ns}; for (size_t i = 0; i < test_count; ++i) fs[i](); } std::cout << "control invoke: " << std::fixed << std::setw(5) << std::setprecision(1) << static_cast<double>(invoke_ns) / test_count << "ns" << std::endl; } test_results results; test_each(results, std::make_index_sequence<test_max_size>{}); for (auto &&result : results) std::cout << std::setw(5) << result.size << " "; std::cout << std::endl; for (auto &&result : results) std::cout << std::fixed << std::setw(5) << std::setprecision(1) << static_cast<double>(result.alloc_ns) / test_count << " "; std::cout << std::endl; for (auto &&result : results) std::cout << std::fixed << std::setw(5) << std::setprecision(1) << static_cast<double>(result.invoke_ns) / test_count << " "; std::cout << std::endl; return 0; }
int main() { for (int i=0; i < 25; ++i) test_each(); }