
Добавил:
Вуз:
Предмет:
Файл:
#include <iostream>
#include "algs.h"
#ifndef sal
#include <sal.h>
#endif // !sal
#ifdef ALGS_H
#include <chrono>
#include <fstream>
#include <vector>
#define MAX_ITERATION 10000
double mean(std::vector<std::chrono::duration<double>> arr)
{
double z = 0;
for (size_t i{}; i < arr.size(); i++)
{
z += arr[i].count();
}
return z / arr.size();
}
int main(_In_ int argc, _In_ char* argv[])
{
std::ofstream OutReFib, OutItFib, OutReFac, OutItFac;
std::vector<std::chrono::duration<double>>secArrayReFib;
std::vector<std::chrono::duration<double>>secArrayItFib;
std::vector<std::chrono::duration<double>>secArrayReFac;
std::vector<std::chrono::duration<double>>secArrayItFac;
std::chrono::system_clock::time_point beg;
std::chrono::system_clock::time_point end;
std::chrono::duration<double> sec;
OutReFib.open("OutReFab.txt");
OutItFib.open("OutItFab.txt");
OutReFac.open("OutReFac.txt");
OutItFac.open("OutItFac.txt");
if (!OutReFib.is_open() || !OutItFib.is_open() || !OutReFac.is_open() || !OutItFac.is_open())
{
return -1;
}
for (size_t i{}; i < 21; i++)
{
for (size_t j{}; j < MAX_ITERATION; j++)
{
beg = std::chrono::system_clock::now();
recursiveFibonachi(i);
end = std::chrono::system_clock::now();
sec = end - beg;
secArrayReFib.push_back(sec);
sec.zero();
beg = std::chrono::system_clock::now();
iterativeFibonachi(i);
end = std::chrono::system_clock::now();
sec = end - beg;
secArrayItFib.push_back(sec);
sec.zero();
beg = std::chrono::system_clock::now();
recursiveFactorial(i);
end = std::chrono::system_clock::now();
sec = end - beg;
secArrayReFac.push_back(sec);
sec.zero();
beg = std::chrono::system_clock::now();
iterativeFactorial(i);
end = std::chrono::system_clock::now();
sec = end - beg;
secArrayItFac.push_back(sec);
sec.zero();
}
OutReFib << i << "\t" << mean(secArrayReFib) << "\n";
OutItFib << i << "\t" << mean(secArrayItFib) << "\n";
OutReFac << i << "\t" << mean(secArrayReFac) << "\n";
OutItFac << i << "\t" << mean(secArrayItFac) << "\n";
secArrayItFac.clear();
secArrayReFac.clear();
secArrayItFib.clear();
secArrayReFib.clear();
std::cout << "End of iteration " << i << std::endl;
}
OutReFib.close();
OutItFib.close();
OutReFac.close();
OutItFac.close();
return 0;
}
#else
int main(_In_ int argc, _In_ char* argv[])
{
std::cout << "Algorithm directories not found\n";
return 0;
}
#endif // ALGS_H