Idomu palyginti kiek RPI greitesnis uz x86 procesoriu. 1 fredas - 8 kartai 4 fredai - 14 kartų

#include <time.h>
#include <stdlib.h>
#include <thread>
#include <iostream>
#include <thread>
#include <stdio.h>
#include <mutex> 
#include <ctime>
 
/*
c++ -Wall -std=c++11 -pthread speed.cpp
sudo ./a.out
*/
std::mutex mtx;
bool must_exit = false;
int64_t counter = 0;
 
double compute_task()
{
	int ln = 1000000;
	double *a = new double[ln];
	double *b = new double[ln];
	for (int i = 0; i<ln; i++) {
		a[i] = i; //1.0 * rand() / RAND_MAX;
		b[i] = i*i - i * 2; //1.0 * rand() / RAND_MAX;
	}
	double c = 0;
	while (must_exit == false)
	{
		for (int i = 0; i<ln; i++) {
			c += a[i] * b[i];
		}
		mtx.lock();
		counter++;
		mtx.unlock();
	}
	delete a;
	delete b;
 
	return c;
}
 
int main()
{
	int tcount = 7;
	std::thread *tasks[100];
	for (int i = 0; i<tcount; i++) {
		tasks[i] = new std::thread(compute_task);
	}
	for (int i = 0; i<10; i++)
	{
		auto scounter = counter;
		std::this_thread::sleep_for(std::chrono::seconds(1));
		auto fcounter = counter;
		std::cout << "tasks per second: " << fcounter - scounter << ", counter: " << counter << "\n";
	}
 
	must_exit = true;
	for (int i = 0; i<tcount; i++) {
		tasks[i]->join();
		delete tasks[i];
	}
 
	std::cout << "done\n";
	return 0;
}