Скачиваний:
2
Добавлен:
15.08.2023
Размер:
2.59 Кб
Скачать
#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
Соседние файлы в папке 3