Skip to content

Instantly share code, notes, and snippets.

@spceaza
Created September 4, 2015 19:59
Show Gist options
  • Save spceaza/001a92a775a58a6ea0d7 to your computer and use it in GitHub Desktop.
Save spceaza/001a92a775a58a6ea0d7 to your computer and use it in GitHub Desktop.
Benchmark SICS Matrix class
#include <type/Matrix.h>
#include <iostream>
#include <ctime>
#include <chrono>
using namespace std;
Matrix<double>* matrix_obj;
double ** matrix_ptr;
void ptr_test();
void obj_test();
int main()
{
ptr_test();
obj_test();
return 0;
}
void ptr_test()
{
unsigned int size = 21000;
matrix_ptr = new double*[size];
for(unsigned int i = 0; i < size; i++)
matrix_ptr[i] = new double[size];
auto start = std::chrono::system_clock::now();
for(unsigned int i = 0; i < size; i++)
for(unsigned int j = 0; j < size; j++)
matrix_ptr[i][j] = i*size + j;
auto end = std::chrono::system_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
cout << "Llenado: " << elapsed.count()/1000.0 << '\n';
double temp;
start = std::chrono::system_clock::now();
for(unsigned int i = 0; i < size; i++)
for(unsigned int j = 0; j < size; j++)
temp = matrix_ptr[i][j];
end = std::chrono::system_clock::now();
elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
cout << "Acceso: " << elapsed.count()/1000.0 << '\n';
for(unsigned int i = 0; i < size; i++)
delete matrix_ptr[i];
delete matrix_ptr;
}
void obj_test()
{
unsigned int size = 21000;
matrix_obj = new Matrix<double>(size,size);
auto start = std::chrono::system_clock::now();
for(unsigned int i = 0; i < size; i++)
for(unsigned int j = 0; j < size; j++)
(*matrix_obj)(i,j) = i*size + j;
auto end = std::chrono::system_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
cout << "Llenado: " << elapsed.count()/1000.0 << '\n';
double temp;
start = std::chrono::system_clock::now();
for(unsigned int i = 0; i < size; i++)
for(unsigned int j = 0; j < size; j++)
temp = (*matrix_obj)(i,j);
end = std::chrono::system_clock::now();
elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
cout << "Acceso: " << elapsed.count()/1000.0 << '\n';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment