#include <chrono>
#include <iostream>

double bar() {
   
   return 1.0;
}

double bar2() {
    return 1.0;
}

double bar3() {
    return 1.0;
}


double foo() {
   double a = 0;
   for(int i = 0; i < 1000; i++) {
      std::chrono::high_resolution_clock::time_point clava_timing_start_0;
      std::chrono::high_resolution_clock::time_point clava_timing_end_0;
      clava_timing_start_0 = std::chrono::high_resolution_clock::now();
      a += bar();
      clava_timing_end_0 = std::chrono::high_resolution_clock::now();
      long long clava_timing_duration_0 = std::chrono::duration_cast<std::chrono::milliseconds>(clava_timing_end_0 - clava_timing_start_0).count();
      std::cout << "Time:" << clava_timing_duration_0 << "ms" << "\n";
   }
   
   return a;
}


int main() {
   std::chrono::high_resolution_clock::time_point clava_timing_start_1;
   std::chrono::high_resolution_clock::time_point clava_timing_end_1;
   clava_timing_start_1 = std::chrono::high_resolution_clock::now();
   foo();
   clava_timing_end_1 = std::chrono::high_resolution_clock::now();
   long long clava_timing_duration_1 = std::chrono::duration_cast<std::chrono::milliseconds>(clava_timing_end_1 - clava_timing_start_1).count();
   std::cout << "Time:" << clava_timing_duration_1 << "ms" << "\n";
   
   std::chrono::high_resolution_clock::time_point clava_timing_start_2;
   std::chrono::high_resolution_clock::time_point clava_timing_end_2;
   clava_timing_start_2 = std::chrono::high_resolution_clock::now();
   bar2();
   clava_timing_end_2 = std::chrono::high_resolution_clock::now();
   long long clava_timing_duration_2 = std::chrono::duration_cast<std::chrono::milliseconds>(clava_timing_end_2 - clava_timing_start_2).count();
   std::cout << "I want to print the value of the elapsed time (" << clava_timing_duration_2 << "), which is in the unit 'ms' and put other stuff after it" << "\n";
   
   std::chrono::high_resolution_clock::time_point clava_timing_start_3;
   std::chrono::high_resolution_clock::time_point clava_timing_end_3;
   clava_timing_start_3 = std::chrono::high_resolution_clock::now();
   bar3();
   clava_timing_end_3 = std::chrono::high_resolution_clock::now();
   long long clava_timing_duration_3 = std::chrono::duration_cast<std::chrono::milliseconds>(clava_timing_end_3 - clava_timing_start_3).count();
   std::cout << clava_timing_duration_3 << "ms" << "\n";
   std::cout << "This should appear after the timer print" << "\n";
}
