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;
}
Esempio n. 2
0
int main() {
    for (int i=0; i < 25; ++i) test_each();
}