#ifdef DEBUG
#pragma once

#include <chrono>
#include <iostream>

template <class T>
void benchmark_execution_speed(const T& expr) noexcept {
  auto start = std::chrono::high_resolution_clock::now();
  expr();
  auto finish = std::chrono::high_resolution_clock::now();
  std::cout << "execution speed: " << std::chrono::duration_cast<std::chrono::milliseconds>(finish - start).count()
            << "ms" << std::endl;
}

template <class T>
void benchmark_memory_usage(const T& object) noexcept {
  std::cout << "memory usage: " << sizeof(object) << "b" << std::endl;
}

#endif