diff --git a/example/bench.cpp b/example/bench.cpp index 25d75f3..5bbd231 100644 --- a/example/bench.cpp +++ b/example/bench.cpp @@ -2,34 +2,37 @@ #include "tc/groups.hpp" #include -#include #include +#include + +template +void test(const G &group) { + auto s = std::clock(); + auto cosets = group.solve(); + auto e = std::clock(); + + double diff = (double) (e - s) / CLOCKS_PER_SEC; + int order = cosets.size(); + + std::cout + << std::setw(7) << group.name << ", " + << std::setw(7) << order << ", " + << std::fixed << std::setprecision(6) << diff << "s" + << std::endl; +} int main() { - std::vector groups = { - tc::group::H(2), - tc::group::H(3), - tc::group::H(4), - tc::group::T(100), - tc::group::T(500), - tc::group::T(1000), - tc::group::E(6), - tc::group::E(7), - tc::group::B(6), - tc::group::B(7), - tc::group::B(8) - }; - - for (const auto &group : groups) { - auto s = std::clock(); // to measure CPU time - auto cosets = group.solve(); - auto e = std::clock(); - - double diff = (double) (e - s) / CLOCKS_PER_SEC; - int order = cosets.size(); - - std::cout << group.name << "," << order << "," << diff << std::endl; - } + test(tc::group::H(2)); + test(tc::group::H(3)); + test(tc::group::H(4)); + test(tc::group::T(100)); + test(tc::group::T(500)); + test(tc::group::T(1000)); + test(tc::group::E(6)); + test(tc::group::E(7)); + test(tc::group::B(6)); + test(tc::group::B(7)); + test(tc::group::B(8)); return 0; }