General Purpose library for Freestanding C++ and POSIX systems
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

32 рядки
689 B

5 роки тому
5 роки тому
  1. #pragma once
  2. #include <string>
  3. #include <vector>
  4. #include <memory>
  5. #include <chrono>
  6. #ifndef NO_BENCH
  7. #define NO_BENCH 1
  8. #endif
  9. constexpr bool do_bench = 1 - NO_BENCH;
  10. template<typename fn>
  11. std::chrono::microseconds time_operation(fn op) {
  12. auto start = std::chrono::high_resolution_clock::now();
  13. op();
  14. auto time = std::chrono::high_resolution_clock::now() - start;
  15. return std::chrono::duration_cast<std::chrono::microseconds>(time);
  16. }
  17. struct test_scaffold{
  18. std::string name;
  19. virtual int run() = 0;
  20. virtual ~test_scaffold() = default;
  21. };
  22. std::vector<std::unique_ptr<test_scaffold>> tests;
  23. struct append_test {
  24. append_test(test_scaffold* ptr) {
  25. tests.emplace_back(ptr);
  26. }
  27. };